私はこの内部クラスを持っています:
private class Plats extends JComponent{
private String namn;
Plats(int x, int y, String n){
namn=n;
setBounds(x-10, y-10, 150, 40);
setPreferredSize(new Dimension(20, 20));
setMinimumSize(new Dimension(20, 20));
setMaximumSize(new Dimension(20, 20));
}
protected void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.BLUE);
g.fillOval(0, 0, 20, 20);
g.setColor(Color.BLACK);
g.setFont(font);
g.drawString(namn, 0, 34);
}
public boolean contains(int x, int y){
return x<20 && x>0 && y<20 && y>0;
}
}
コンポーネントの境界をコンストラクターが取得する文字列の幅に設定したいのですが、グラフィックス オブジェクトが必要なため、paintComponent メソッド内で行う場合にのみ動作させることができます。コンポーネントを再描画する必要があるたびに境界が再度設定され、作成時に一度だけ実行したいので、paintComponent メソッドでそれを行うのは間違っていると感じます。
これを解決する方法を提案してください。それとも、とにかくペイントコンポーネントでそれを行う必要がありますか?、それは機能しますが、私は良い解決策のようには感じません:(?