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 の問題ではありません。他のいくつかのレイアウト マネージャーでこれを試してみましたが、基本的には常に背面のパネルが非表示になります。
ご提案いただきありがとうございます。