カスタム ペイントが実行される JPanel があります。これには最大 15 秒かかる場合があります。
問題は、JPanel の描画中にメニューをクリックすると、メニュー上で描画が行われ、オプションが表示されないことです。(画像の歪んだテキストを参照してください)
ペイントが完了した後にメニューをクリックすると、望ましくない動作はありませんが、マウス ポインターを別のメニューに移動すると、同じことが再び起こります。たとえば、ペイントが完了した後、[アプリケーション] をクリックすると副作用は発生しませんが、マウス ポインターを [ヘルプ] に移動すると、前述の動作が発生します。どうすればこれを回避できますか?
別のスレッドで paintComponent() メソッドの外側でペイントを実行しています。
public class RandomIFSPanel extends JPanel {
RandomIFSPanelRenderer randomIFSPanelRenderer;
@Override
public void paintComponent(Graphics graphics) {
try {
randomIFSPanelRenderer.stop();
} catch (Exception e) {
}
randomIFSPanelRenderer = new RandomIFSPanelRenderer();
randomIFSPanelRenderer.start();
}
class RandomIFSPanelRenderer extends Thread {
@Override
public void run() {
for (int i = 0; i < numberOfPoints; i++) {
Graphics g=getGraphics();
g.setColor(Color.WHITE);
g.drawLine........
}
}
}
}