我正在使用Java Swing,当涉及到JPanel和JComponent时感到非常困惑。根据《CoreJava第1卷》(Cay Horstmann)的说法:
一些程序员喜欢扩展JPanel类,而不是扩展JComponent。JPanel旨在成为可以包含其他组件的容器,但也可以在其上绘制。只有一个区别。面板是不透明的,这意味着它负责绘制其边界内的所有像素。最简单的方法是使用背景颜色来绘制面板,在每个面板子类的paintComponent方法中调用super.paintComponent:
我知道什么是opaque。他所说的“面板不透明...负责绘制其范围内所有像素”是什么意思?如果我理解正确,它表示面板将在其边界内绘制自己的区域... JComponent也是这样做的,不是吗?
总之,我看不出JPanel和JComponent之间的区别。有没有简单的示例可以真正看到它们之间的区别?
感谢任何帮助。
一些程序员喜欢扩展JPanel类,而不是扩展JComponent。JPanel旨在成为可以包含其他组件的容器,但也可以在其上绘制。只有一个区别。面板是不透明的,这意味着它负责绘制其边界内的所有像素。最简单的方法是使用背景颜色来绘制面板,在每个面板子类的paintComponent方法中调用super.paintComponent:
class NotHelloWorldPanel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
. . . // code for drawing will go here
}
}
我知道什么是opaque。他所说的“面板不透明...负责绘制其范围内所有像素”是什么意思?如果我理解正确,它表示面板将在其边界内绘制自己的区域... JComponent也是这样做的,不是吗?
总之,我看不出JPanel和JComponent之间的区别。有没有简单的示例可以真正看到它们之间的区别?
感谢任何帮助。
JPanel
并不总是Opaque
。因此最好明确设置它 :-) - nIcE cOw