JFrameにはいくつかのボタンとJComponentが描画されています。イメージをロードし、JComponentで1番目をペイントします。今私の問題は、私のJComponentは、最初のペイントするとすぐに、永続的に再ペイントされ、数秒後にOutOfMemoryErrorが発生するということです... g.drawImage(...)
は私がコメントすると無限もうループ:JComponentは永続的に再ペイントされます
@Override
public void paintComponent(Graphics g){
System.out.println("Test");
if(!images.isEmpty()){
Image img = activeImage.img.getScaledInstance(middleImage.getWidth(), middleImage.getHeight(), Image.SCALE_SMOOTH);
if(mode != 0){
if(mis != null){
img = createImage(mis).getScaledInstance(middleImage.getWidth(), middleImage.getHeight(), Image.SCALE_SMOOTH);
}
}
g.drawImage(img, 0, 0, this);
}
}
へようこそそう。あなたに好意を持って[Minimal、Complete、and Verifiable example](https://stackoverflow.com/help/mcve) –
を作成する人をしてください。1) 'repaint'と' revalidate 'を実行する必要があります。 invokeLaterを介してイベントディスパッチスレッド(EDT)上で実行される。 2)あなたのスレッド、特に 'ContinousDraw'はループに入り、スリープ状態にはならず、正しく再描画するEDTの能力に影響を与えることがあります。 3)ループ中の 'createImage(mis)'は、何回も実行された場合にメモリ不足の原因となります。 – tsolakp
塗装方法内からコンポーネントの状態を更新しないでください – MadProgrammer