我曾经ImageIO.read
获取图像(BackgroundImage
)并像这样绘制背景图像:
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(background, 0, 0, backDim.width, backDim.height, null);
}
我在上面添加了一些组件JPanel
(插入其中的面板的背景颜色是new Color(0,0,0,0)
(透明)。背景图像在启动时正确显示;但是,当我将它拖到屏幕的底部边缘时,其中一半被删除。当我将它拖到屏幕的左边缘或右边缘时,它会被重新绘制。
啊,当我删除Box.createRigidArea()
间隙时,只有标题的背景才能正确显示。其他空间只是 JPanel 的默认颜色(浅灰色)。
编辑:我添加了一个组件侦听器,以使每次移动窗口时都绘制屏幕,但它经常调用重绘,因此计算机可能会过载。还有其他解决方案吗?
编辑:问题是当我将窗口(包含嵌套JPanel
的背景图像)移动到屏幕底部并将其拖回时,一些(或大部分)绘制的图像被删除。但是,repaint()
没有调用。
最终编辑:已解决。那是因为我没有调用 setOpaque(false);