2013-10-05 97 views
0

我想要做的是有一個JButton,當您點擊它時,它將關閉JFrame /應用程序。我有一個JButton,但我想知道如何使它關閉當前打開的窗口。使用JButton關閉當前打開的應用程序

+1

1)使用['setDefaultCloseOperation(DISPOSE_ON_CLOSE)'](http://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html#setDefaultCloseOperation%28int%29 )。 「按鈕」(框架右上方)內置。 2)*「謝謝,諾亞」*噪音,不要說了。 –

回答

1

只需使用JFrame的dispose()方法即可。見Javadoc

附錄:另外,您可能希望將JFrame的默認關閉操作設置爲「退出」,而不是默認的「隱藏」。當你創建你的框架時做。

JFrame frame = new JFrame(); 
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 

// Do whatever your application does. 

frame.dispose(); // With this you close the frame. 
+1

*「..」退出「,而不是默認的」隱藏「。」*更好的是'DISPOSE_ON_CLOSE'。它將只在所有非守護線程完成運行後退出虛擬機。如果虛擬機在幀關閉後一直運行無限,這是程序員需要明確清理/關閉的線程的跡象。 –

2

JButtonactionPerformed(),只需添加System.exit(0)。你已準備好出發。

+0

@AndrewThompson哦,是的。非零意味着異常終止。 –

+0

@AndrewThompson有點難以擺脫MR。但是..我認爲你應該在那裏留下'噪音'。 –

+0

呃(聳聳肩)如果這個人編輯的答案包括建議(這是我的偏好),評論就變成了噪音。 –

3

將一個監聽器註冊到您的按鈕,然後在單擊按鈕上調用System.exit(0)。

JButton button = new JButton("Close"); 
button.addActionLister(new ActionListener(){ 

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

*「可能會因爲我在沒有IDE的情況下編寫此代碼而發生語法更改」*不錯,給出您從..memory,experience ..類型輸入的內容。在使用我的編譯器檢查細節之後,我做了一些調整。 –

+0

謝謝@AndrewThompson :) – dinukadev

0

只需調用JFrame的Dispose()方法,隨後System.exit(0)

+0

此消息是爲Dinukadev – Noah

+0

此消息是爲了Dinukadev – Noah

+0

我不這麼認爲,這是操作系統的一部分。也許你可以創建自己的外觀和感覺,併爲你的應用程序明確設置它。 – MeBNoah

1

見從Closing an ApplicationExitAction

這種方法與其他建議有點不同,因爲它會將windowClosing()事件分派給Window。這將導致窗口基於窗口的關閉選項關閉,並將調用您可能已添加到窗口以處理windowClosing()事件的任何窗口偵聽器。

0

使從包含的JFrame應用程序中的類的對象,然後dispose它在一個按鈕事件監聽器:

爲前。

public class Application extends JFrame { 
     private static final long serialVersionUID = 1L; 
     static Application app= new Application(); 

    public Application{ 
     setLayout(new FlowLayout()); 
     Container pane =this.getContentPane(); 

     JPanel right = new JPanel(); 
     right.setLayout(new GridLayout(4,1)); 



     ButtonEvent = new JButton("Button"); 
     right.add(whiteList); 


     pane.add(right); 

} 

    public class ButtonEvent implements ActionListener{ 
    public void actionPerformed (ActionEvent event){ 
     app.dispose(); 
     dispose(); 
    } 

} 


public static void main(String args[]){ 
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    app.setVisible(true); 
    app.setTitle("Application"); 
    app.setSize(700,500); 
    app.setLocation(350, 100); 
    } 
} 
相關問題