windowStateChanged(WindowEvent   e)
怎么区分最大化、恢复、以及最小化事件?

解决方案 »

  1.   

    好像  只有 这个改变的 int~   COMPONENT_RESIZED
      

  2.   

    可以通过e.getNewState()来获取啊
      

  3.   


       public class WinFrame extends JFrame { public WinFrame(){
    this.setName("Window 窗口状态");
    this.setSize(300,300);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.addWindowStateListener(new WindowStateListener () { public void windowStateChanged(WindowEvent state) {

    if(state.getNewState() == 1 || state.getNewState() == 7) {
    System.out.println("窗口最小化");
    }else if(state.getNewState() == 0) {
    System.out.println("窗口恢复到初始状态");
    }else if(state.getNewState() == 6) {
    System.out.println("窗口最大化");
    }
    }
    });
    this.setVisible(true);
    }
    public static void main(String[] args) {
    new WinFrame();
    }
      

  4.   


    JFrame frame = new JFrame();
    frame.addWindowStateListener(new WindowStateListener(){
    @Override
    public void windowStateChanged(WindowEvent e) {
    if(e.getOldState() != e.getNewState()){
    switch (e.getNewState()) {
    case Frame.MAXIMIZED_VERT:
    // 最大化 
    break;
    case Frame.ICONIFIED:
    // 最小化 
    break;
    case Frame.NORMAL:
    // 恢复 
    break;
    default:
    break;
    }
    }
    }
    });
      

  5.   

    不好意思,最大化那个常量写错了,应该是
    Frame.MAXIMIZED_BOTH