问题描述
我已将JLayeredPane
添加到JFrame
。在上述窗格中,我添加了一个带有重载JComponent
方法的paintComponent(Graphics g)
,该方法除其他外还调用super.paintComponent(g)
。 JComponent
的构造函数中还包含setBackground(Color.RED)
和setBounds(0,100,100)
。
问题是JComponent
似乎根本没有被绘制。但是,如果我将由JComponent
扩展的类更改为JPanel
,则可以正常工作。
这有关系吗?我想知道为什么它会这样工作,当我不在乎扩展JPanel
时,似乎只是不必要的开销。
感谢您的时间。
解决方法
JComponent还具有setBackground(Color.RED)
单靠它是无能为力的。
JComponent没有默认的绘制代码,因此调用super.paintComponent()不会导致绘制任何背景。
如果要绘制背景,则需要添加自己的自定义绘制代码:
g.seColor( getBackground() );
g.fillRect(0,getWidth(),getHeight());