0
嘿傢伙。我有一個JPanel,它在點擊時改變顏色(這在另一個類中正確處理)。JPanel不重繪,即使調用repaint()和重新驗證()
不幸的是,當我打電話重繪()方法,它不畫(或它調用的paintComponent方法與VAR currentBGColor舊的顏色值 - >參見下面的代碼)
public class MyClass extends JPanel {
curentBGColor = Color.red;
final int SIZE = 70;
public MyClass(){
setPreferredSize (new Dimension (SIZE,SIZE));
}
public void paintComponent (Graphics g)
{
g.setColor (currentBGColor); //I want this to paint white when newColor() is called
g.fillRect (0,0,getWidth(),getHeight());
g.setColor (Color.black);
g.drawLine (0,0,SIZE-1,0);
g.drawLine (0,0,0,SIZE-1);
g.drawLine (0,SIZE-1,SIZE-1,SIZE-1);
g.drawLine (SIZE-1,0,SIZE-1,SIZE-1);
}
void newColor(){
currentBGColor = Color.white;
repaint();
revalidate();
}
}
有誰有什麼想法爲什麼它不用新的顏色繪畫?
賓果!爲什麼我沒有想到這個? – 2011-06-05 21:52:20
@Jimmy:不,揮發性在這裏是非常錯誤的,只會造成混淆。只是不要這樣做。是的,你應該撥打美國東部時間所有的鞦韆電話,但我不知道線程是否仍然是問題。我們需要了解您如何調用此方法來幫助您糾正錯誤,因爲上面的代碼沒有顯示錯誤,但請不要在此遵循託託的建議。我知道他表示很好,但這顯然是錯誤的。 – 2011-06-05 22:01:08
是的,我正要添加一個評論,這不是Swing的方式。至少它確定了問題。 – toto2 2011-06-05 22:01:51