Java實現(xiàn)窗口退出確認(rèn)框,確認(rèn)框取消按鈕問題

在Java學(xué)習(xí)GUI時難免會遇到點擊框架退出時需要彈出確認(rèn)提示框的需求磁滚,廢話不多說,直接上代碼,下面是主程序宵晚,MenuFrame是繼承JFame的類

public class Test_19 {
    public static void main(String[] args) {
        EventQueue.invokeLater(() -> {
            MenuFrame frame = new MenuFrame();
            //不執(zhí)行任何操作;要求程序在已注冊的 WindowListener 對象的 windowClosing 方法中處理該操作
            frame.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
            frame.addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    int result = JOptionPane.showConfirmDialog(null, "確認(rèn)退出?", "確認(rèn)", JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE);
                    if(result == JOptionPane.OK_OPTION){
                        System.exit(0);
                    }
                }
            });
            frame.setTitle("第二次作業(yè)");
            frame.setVisible(true);
        });
    }
}

代碼是挺短的垂攘,邏輯也很簡單,首先為frame添加了一個監(jiān)聽窗口事件的方法addWindowListener淤刃,然后使用了匿名內(nèi)部類的方法晒他,,將WindowAdapter的對象傳給這個方法,然后在匿名類中重寫了windowClosing的方法逸贾,接著在方法里面顯示了確認(rèn)的對話框陨仅,對確認(rèn)按鈕進行監(jiān)聽,并實現(xiàn)退出铝侵。

上面代碼親測有效灼伤,不過有些坑我覺得還是得提出來,有些人可能會碰到某些問題咪鲜,能夠彈出確認(rèn)框狐赡,但點擊取消按鈕后還是退出了程序,其實程序并沒有結(jié)束疟丙,只是被隱藏了起來颖侄,如何解決呢?

網(wǎng)上很多做法是直接刪去下面這行代碼:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

這句代碼是默認(rèn)會結(jié)束程序享郊,但我嘗試后并沒有解決問題览祖,后來看來某百度知道才終于解決了問題

JFrame的關(guān)閉不像Frame,點關(guān)閉按鈕自己會關(guān)閉炊琉,但是那樣做不好.可以用setDefaultCloseOperation(int operation);其中operation有以下幾種:
DO_NOTHING_ON_CLOSE(在 WindowConstants 中定義):不執(zhí)行任何操作;要求程序在已注冊的 WindowListener 對象的 windowClosing 方法中處理該操作穴墅。
HIDE_ON_CLOSE(在 WindowConstants 中定義):調(diào)用任意已注冊的 WindowListener 對象后自動隱藏該窗體。
DISPOSE_ON_CLOSE(在 WindowConstants 中定義):調(diào)用任意已注冊 WindowListener 的對象后自動隱藏并釋放該窗體温自。
EXIT_ON_CLOSE(在 JFrame 中定義):使用 System exit 方法退出應(yīng)用程序。僅在應(yīng)用程序中使用皇钞。
默認(rèn)情況下悼泌,該值被設(shè)置為 HIDE_ON_CLOSE。更改此屬性的值將導(dǎo)致激發(fā)屬性更改事件夹界,其屬性名稱為 "defaultCloseOperation"馆里。

于是將setDefaultCloseOperation(int operation)的值更改為DO_NOTHING_ON_CLOSE后解決問題

frame.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子鸠踪,更是在濱河造成了極大的恐慌丙者,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,126評論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件营密,死亡現(xiàn)場離奇詭異械媒,居然都是意外死亡,警方通過查閱死者的電腦和手機评汰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評論 3 400
  • 文/潘曉璐 我一進店門纷捞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人被去,你說我怎么就攤上這事主儡。” “怎么了惨缆?”我有些...
    開封第一講書人閱讀 169,941評論 0 366
  • 文/不壞的土叔 我叫張陵糜值,是天一觀的道長。 經(jīng)常有香客問我坯墨,道長寂汇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,294評論 1 300
  • 正文 為了忘掉前任畅蹂,我火速辦了婚禮健无,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘液斜。我一直安慰自己累贤,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,295評論 6 398
  • 文/花漫 我一把揭開白布少漆。 她就那樣靜靜地躺著臼膏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪示损。 梳的紋絲不亂的頭發(fā)上渗磅,一...
    開封第一講書人閱讀 52,874評論 1 314
  • 那天,我揣著相機與錄音检访,去河邊找鬼始鱼。 笑死,一個胖子當(dāng)著我的面吹牛脆贵,可吹牛的內(nèi)容都是我干的医清。 我是一名探鬼主播,決...
    沈念sama閱讀 41,285評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼卖氨,長吁一口氣:“原來是場噩夢啊……” “哼会烙!你這毒婦竟也來了负懦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,249評論 0 277
  • 序言:老撾萬榮一對情侶失蹤柏腻,失蹤者是張志新(化名)和其女友劉穎纸厉,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體五嫂,經(jīng)...
    沈念sama閱讀 46,760評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡颗品,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,840評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了贫导。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抛猫。...
    茶點故事閱讀 40,973評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖孩灯,靈堂內(nèi)的尸體忽然破棺而出闺金,到底是詐尸還是另有隱情,我是刑警寧澤峰档,帶...
    沈念sama閱讀 36,631評論 5 351
  • 正文 年R本政府宣布败匹,位于F島的核電站,受9級特大地震影響讥巡,放射性物質(zhì)發(fā)生泄漏掀亩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,315評論 3 336
  • 文/蒙蒙 一欢顷、第九天 我趴在偏房一處隱蔽的房頂上張望槽棍。 院中可真熱鬧,春花似錦抬驴、人聲如沸炼七。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽豌拙。三九已至,卻和暖如春题暖,著一層夾襖步出監(jiān)牢的瞬間按傅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評論 1 275
  • 我被黑心中介騙來泰國打工胧卤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留唯绍,地道東北人。 一個月前我還...
    沈念sama閱讀 49,431評論 3 379
  • 正文 我出身青樓枝誊,卻偏偏與公主長得像推捐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子侧啼,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,982評論 2 361

推薦閱讀更多精彩內(nèi)容