我有这个内部类:
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 方法中这样做感觉不对,因为每次必须重新绘制组件时,它都会再次设置边界,而我只想在创建它时执行一次。
建议我如何解决这个问题?还是我应该在paintComponent中做它?,它可以工作,但我觉得不是一个好的解决方案:(?