问题描述
我总是这样做
Jbutton.setEnabled(false);
Jbutton.update(Jbutton.getGraphics());
在禁用按钮时,但是有人告诉我Jbutton.update(Jbutton.getGraphics());
不应使用,或者至少不应该那样使用。为什么?效率不高吗?不对吗我应该改变我的方法吗?
解决方法
不应在Jbutton.update上使用getGraphics(),
实际上,它比那还宽。程序员切勿在任何getGraphics
(或AWT JComponent
)上使用Component
或在Swing(和AWT)窗口中使用相同的语言。
为什么?
因为API会在需要重绘时调用绘制方法(例如,从最小化还原窗口,将另一个窗口移至顶部或远离该窗口,使其移到最前面。)。
因此,任何使用getGraphics
的呼叫都是“瞬态”。
[Holger的评论中提到了进行自定义绘画的正确方法,但这不是问题。 ]