2012-06-22 154 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"); 
     
        } 
     
    }