JComponent未在JLayeredPane上绘制,因此JPanel是

问题描述

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...