2012-06-22 151 views
6

有沒有辦法讓JFrame對象的事件偵聽器檢測用戶何時單擊窗口最大化或最小化按鈕?如何檢測JFrame窗口最小化和最大化事件?

現在用的是JFrame的對象,如下所示:

JFrame frame = new JFrame("Frame");

+1

你有一個具體的目標? – trashgod

+0

是的,我需要知道窗口何時調整大小,以便我可以重新繪製框架內的組件。 –

+1

在調整框架大小時,將自動調用validate()和repaint()方法,但您可能需要更新其他數據結構;另見['AnimationTest'](http://stackoverflow.com/a/3256941/230513)。 – trashgod

回答

4

是的,您可以通過windowDeiconified(WindowEvent e)實現「WindowListener」方法,即windowIconified(WindowEvent e)來實現。有關詳細信息,請訪問this

4
  1. 創建一個幀,並添加一個監聽器:

JFrame frame = new JFrame(); 
 
frame.addWindowStateListener(new WindowStateListener() { 
 
    public void windowStateChanged(WindowEvent arg0) { 
 
     frame__windowStateChanged(arg0); 
 
    } 
 
});

  • 實施監聽器:
  • public void frame__windowStateChanged(WindowEvent e){ 
     
        // minimized 
     
        if ((e.getNewState() & Frame.ICONIFIED) == Frame.ICONIFIED){ 
     
         _print("minimized"); 
     
        } 
     
        // maximized 
     
        else if ((e.getNewState() & Frame.MAXIMIZED_BOTH) == Frame.MAXIMIZED_BOTH){ 
     
         _print("maximized"); 
     
        } 
     
    }