2012-02-28 92 views
1

我希望窗口關閉,當我按下取消按鈕,但它不工作。的Java:取消按鈕不會關閉該窗口的JFrame

代碼:

public class FirstClass{ 

private JFrame frame; 
private JButton btnCancel; 

public FirstClass() { 

    frame = new JFrame("GRIIS Data Transfer [Mobile to PC]"); 
    frame.setBounds(200,200,900,450); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().setLayout(null); 

    btnCancel = new JButton("Cancel"); 
    btnCancel.setBounds(800, 5, 85, 25); 

    frame.add(btnCancel); 

    btnCancel.addActionListener(new ActionListener() { 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      frame.addWindowListener(new WindowAdapter() { 
       @Override 
       public void windowClosing(WindowEvent e) { 
        super.windowClosing(e); 
        System.exit(0); 
       } 
      }); 
     } 

    }); 

}//end of constructor 
public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 

     @Override 
     public void run() { 
      try { 
       FirstClass window = new FirstClass(); 
       window.frame.setVisible(true); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 
} 

請讓我知道在代碼中所需變化的情況下。

btnCancel.addActionListener()

,所以我的代碼將工作和關閉應用程序,當我按下取消按鈕。

回答

6

不使用窗口聽者它在關門時間給事件,嘗試

btnCancel.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       System.exit(0); 
      }}); 
+0

感謝名單哥們...... 如果u認爲這是好問題,那就請投票吧。 – 2012-02-28 06:10:51

5

無需重寫WindowListener的方法,

public void actionPerformed(ActionEvent e) { 
    System.exit(0); 
}