我有一个包含JLayeredPane的JFrame,其中包含2个JPanel,一个在另一个之上。
前面的JPanel是一个带有一些按钮的简单GridLayout。
背面的JPanel是一张必须定期更换的图片。它基本上是来自相机的snapsnot,并且必须每秒更新几次。
要定期在此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的问题,我已经尝试过与其他几个布局管理器,基本上每次它仍然隐藏在后面的面板。
非常感谢您提出任何建议!