2014-02-13 40 views
1

在JOptionPane中如何表示X按鈕?Java中的JOptionPane中的X按鈕是如何表示的?

當我的程序啓動時,一個JOptionPane出現並且在JFrame出現之後直接進入。想要的是,當用戶按下X按鈕時,爲了系統存在並且不顯示任何JFrame,而是關閉兩個JOptionPane並且不顯示JFrame。

所以像這樣的東西,但我不知道如何表示X按鈕;

if (reply == JOptionPane.NO_OPTION){ 
     System.exit(ABORT); 
     } 
+0

很可能你傳遞了一個'新的JFrame'作爲第一個參數,當它應該是'null'時,就像@HovercraftFullOfEels在他的回答中一樣。 –

回答

3

你可以自己只是測試它:

public static void main(String[] args) { 
    int result = JOptionPane.showConfirmDialog(null, "This is a test", 
     "Test", JOptionPane.OK_CANCEL_OPTION); 

    System.out.println("result: " + result); 
} 

它取決於您使用哪個JOptionPane,但對於showConformDialog,您會發現它返回-1,與JOptionPane.CLOSED_OPTION相同。

公共靜態最終詮釋CLOSED_OPTION
返回從類方法值,如果用戶關閉窗口而不做任何選擇,更可能這應視爲CANCEL_OPTION或NO_OPTION:這是在其中規定了JOptionPane API很好的描述。


編輯
你問JOptionPane的是/否選項,再次測試它自己。例如,

import javax.swing.JOptionPane; 

public class TestOptionPane { 
    public static void main(String[] args) { 
     int result = JOptionPane.showConfirmDialog(null, "This is a test", 
      "Test", JOptionPane.YES_NO_OPTION); 

     System.out.println("result: " + result); 

     switch (result) { 
     case JOptionPane.YES_OPTION: 
     System.out.println("Yes Pressed"); 
     break; 
     case JOptionPane.NO_OPTION: 
     System.out.println("No Pressed"); 
     break; 
     case JOptionPane.CLOSED_OPTION: 
     System.out.println("Dialog closed"); 
     break;  
     default: 
     System.out.println("Default"); 
     break; 
     } 
    } 
} 

編輯2
幽州:

我已經試過了,但它不工作。當我按下右上角的X按鈕時,它仍會顯示JFrame。

然後你的邏輯錯了。

如果您使用上面的開關,而不是在用戶中止時使用println關閉了應用程序,該怎麼辦?

+0

但我的JOptionPane已經有YES和NO選項,例如底部的兩個按鈕分別表示是或否。 – Seeker

+1

@ user3288493:沒關係。如果你用***你的*** JOptionPane測試它,如果用戶按下取消按鈕,你仍然會得到'JOptionPane.CLOSED_OPTION'。 –

+0

感謝它現在的作品。 – Seeker

1

JFrame中有一個專門用於該

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);方法告訴應用程序,當按下X,該框架應被關閉,編譯器被告知停止

另一個功能是你可以設置JFrame的知名度假

frame.setVisible(false); 
+0

他不問JFrame,但JOptionPane。這對於JOptionPane不起作用。 –