0

我有一个 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 的问题,我已经用其他几个布局管理器尝试过这个,基本上每次它仍然隐藏在后面的面板。

非常感谢您的任何建议!

4

0 回答 0