我有一个 JFrame,其中包含一个 JLayeredPane,其中包含 2 个 JPanel,一个在另一个之上。
前面的 JPanel 是一个带有一些按钮的简单 GridLayout。
背面的 JPanel 是一个必须定期更改的图像。它基本上是来自相机的快照,并且必须每秒更新几次。
要定期在此 JPanel 上绘制图像,我将调用此 updateImage 方法:
public void updateImage(Image image)
{
if(image == null) return;
setSize(image.getWidth(null),image.getHeight(null));
this.image = image;
this.repaint();
}
@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(image,0,0,null);
}
但是,每次调用paintComponent 时,都会隐藏前面的面板。
我尝试了几种不同的方法,最接近完成这项工作的是通过调用:
((JLayeredPane)this.getParent()).setLayer(this, 0);
在paintComponent 方法的底部。这行得通,但速度非常慢。
我还可以做些什么?
顺便说一句,这不是 JLayeredPane 的问题,我已经用其他几个布局管理器尝试过这个,基本上每次它仍然隐藏在后面的面板。
非常感谢您的任何建议!