2012-03-07 11 views
0

プログラムが最小化されたときにパネルを再描画するプログラムを停止できますか? *スウィングを使用最小化するとウィンドウの再描画を防止します

+1

どのフレームワークを使用していますか?スイング? AWT? SWT?その他? –

+0

@TedHopp Swing申し訳ありません –

+1

再ペイントが発生するとどうなりますか?これは、あなたの 'paint'や' paintComponent'メソッドにプログラムロジックを持っているような、もっと大きな問題が潜んでいるのではないかと思います。 –

答えて

1

hereを見つけることができます私の前の例に小さな変更を加えるような単純なものができているWindowListenerの使用例:

あなたが JFrameを使用している場合は、あるウィンドウの最小化イベントを検出することができます
private static void createAndShowGui() { 
    ShowGraph showGraphPanel = new ShowGraph(MAX_POINTS); 
    TimerListener timerListener = new TimerListener(MAX_POINTS, showGraphPanel); 

    JFrame frame = new JFrame("TestShowGraph"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().add(showGraphPanel); 
    frame.pack(); 
    frame.setLocationByPlatform(true); 
    frame.setVisible(true); 

    // Timer now made a final variable so it can be referred to 
    final Timer timer = new Timer(TIMER_DELAY, timerListener); 
    timer.start(); 

    frame.addWindowListener(new WindowAdapter() { 

    @Override 
    public void windowOpened(WindowEvent arg0) { 
     timer.start(); 
    } 

    @Override 
    public void windowIconified(WindowEvent arg0) { 
     timer.stop(); 
    } 

    @Override 
    public void windowDeiconified(WindowEvent arg0) { 
     timer.start(); 
    } 

    @Override 
    public void windowActivated(WindowEvent arg0) { 
     timer.start(); 
    } 
    }); 
} 
2

実際の問題は、アニメーションループなどを最小限に抑えることです。

myFrame.addWindowStateListener(
    new WindowStateListener() { 
     @Override 
     public void windowStateChanged(WindowEvent evt) { 
      if (myFrame.getState() == Frame.ICONIFIED) { 
       // suspend painting/animation loops 
      } else { 
       // resume or continue painting/animation loops 
      } 
     } 
    } 
); 
+0

あなたはどうやってサスペンドしますか? –

+0

@Chris:Swing Timersで利用できるメソッドを見てください。あなたはそれを理解するでしょう。 –

+0

@Chris - あなたのアニメーションが 'javax.swing.Timer'によって駆動されている場合は、単にアニメーションを中断/再開するためにタイマーの' stop() 'と' start() 'メソッドを呼び出すことができます。いくつかのサンプルコードについては、[Threads and Swing](http://java.sun.com/products/jfc/tsc/articles/threads/threads1.html)の記事を参照してください。 –

関連する問題