0

2 つの JPanel を上下に含む JLayeredPane を含む JFrame があります。

前面の JPanel は、いくつかのボタンを備えた単純な GridLayout です。

後ろのJPanelは定期的に変えないといけないイメージです。これは基本的にカメラからのスナップであり、1 秒に数回更新する必要があります。

この 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