我在玩 Java Swing,当谈到 JPanel 和 JComponent 时,我真的很困惑。根据 CoreJava Vol 1 (cay horstmann):
一些程序员喜欢扩展 JPanel 类,而不是扩展 JComponent。JPanel 旨在成为可以包含其他组件的容器,但也可以在其上进行绘制。只有一个区别。面板是不透明的,这意味着它负责绘制其边界内的所有像素。实现这一点的最简单方法是使用背景颜色绘制面板,方法是在每个面板子类的 paintComponent 方法中调用 super.paintComponent:
class NotHelloWorldPanel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
. . . // code for drawing will go here
}
}
我知道什么是不透明。他所说的“面板是不透明的......负责绘制其边界内的所有像素”是什么意思?如果我没看错的话,它说面板会在其边界内绘制自己的区域.. JComponent 不也这样做吗?
底线是我看不出 JPanel 和 JComponent 之间的区别。有没有一个简单的例子,我真的可以看到它?
任何帮助表示赞赏