在编写这个画笔程序时,我决定清除面板容器(链接代码中的panel2
)。我使用了PanelName.setForeground(null)
,它起了作用。我想知道的是,这种方法和其他从容器中删除图形对象的方法是否存在已知的缺点。
如果覆盖paintComponent
,则可以使用Graphics#clearRect
清除其Graphics
。但总的来说,我更喜欢你的方法,因为我的方法需要你为JPanel
子类,或者匿名声明一个。
@mre的答案相反,"尊重这个特性取决于外观和感觉,有些人可能会选择忽略它。"我不知道PanelUI
会忽略前景色,但在测试时需要注意这一点。
附录:正如@kleopatra所评论的,JComponent@setForeground()
API链接到Component#getForeground()
API,其中指出:"如果此组件没有前景色,则返回其父组件的前景色。"