JComponent 未在 JLayeredPane 上绘制,JPanel 是

JComponent not being drawn on JLayeredPane, JPanel is

我已经将 JLayeredPane 添加到 JFrame。对于所述窗格,我添加了一个 JComponent 和重载 paintComponent(Graphics g) 方法,它调用 super.paintComponent(g) 等。 JComponent 在其构造函数中也有 setBackground(Color.RED)setBounds(0, 0, 100, 100)

问题是,JComponent 似乎根本没有被绘制。但是,如果我将 JComponent 扩展的 class 更改为 JPanel,它工作正常。

这有关系吗?我想知道为什么它以这种方式工作,当我不关心它的添加时似乎扩展 JPanel 只是不必要的开销。

感谢您的宝贵时间。

The JComponent also has setBackground(Color.RED)

它自己什么都不做。

JComponent 没有默认绘制代码,因此调用 super.paintComponent() 不会导致绘制任何背景。

如果你想绘制背景你需要添加你自己的自定义绘制代码:

g.seColor( getBackground() );
g.fillRect(0, 0, getWidth(), getHeight());