JScrollPane内のJPanelを再ペイントする際に問題があります。JScrollPane内のJPanelを再ペイントするときのちらつき
基本的に、私はちょうどJScrollPaneに私の既存のEditPanel(元々はJPanelを拡張しました)を 'ラップしようとしています。
JPanelが頻繁に更新されるようです(大量点滅)。私はこれをどうやって止めますか?私はsetIgnoreRepaint()を使ってみましたが、何もしていないようです。
グラフィックスを表示するために使用しているJPanelを微調整するために、この現在の実装が機能するか、別の内部クラスを作成する必要がありますか?
スケルトンコード:
public class MyProgram extends JFrame{
public MyProgram(){
super();
add(new EditPanel());
pack();
}
private class EditPanel extends JScrollPane{
private JPanel graphicsPanel;
public EditPanel(){
///EDIT, sorry, should have mentioned this was here before
super();
graphicsPanel = new JPanel();
this.setViewportView(graphicsPanel);
//END EDIT
}
public void paintComponent(Graphics g){
graphicsPanel.revalidate(); //update the scrollpane to current panel size
repaint();
Graphics g2 = graphicsPanel.getGraphics();
g2.drawImage(imageToDraw, 0, 0, null);
}
}
}
なぜそれが機能していなかったのかを説明してくれてありがとう。 EditPanelは最初はJFrameを拡張していましたが、複数のインスタンスを作成していて、それぞれがJScrollPaneにあったので、JScrollPaneをオブジェクトに統合するのがよりコンパクトになると思いました。私はJFrameを拡張することに戻ります。 – pR0Ps