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());
我已经将 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());