關於JOptionPane的showConfirmDialog問題

 在寫記事本時,在處理關閉事件時用到JOptionPane的showConfirmDialog,卻發現一些問題,代碼和問題如下:

addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent event) {
                if (selectedFile == null     
                        && textArea.getText().equals("")){
                    System.exit(0);
              //這個代表是一個空的文檔,點擊直接退出,成功                  
                }else if(JOptionPane.showConfirmDialog(container, 
                                            "是否保存?","是否保存",//①
                   JOptionPane.YES_NO_CANCEL_OPTION) == JOptionPane.CANCEL_OPTION){
                        return;
             //當有文檔時,點關閉時彈出對話框,按“取消”則返回,成功
                }else if(JOptionPane.showConfirmDialog(container, 
                                           "是否保存?","是否保存",//②
                       JOptionPane.YES_NO_CANCEL_OPTION) == JOptionPane.NO_OPTION){
                    System.exit(0);
            //當點關閉,按“否”(即不保存時),還會出現一次對話框,要再按一次“否”才退出
                }else if(JOptionPane.showConfirmDialog(container, 
                                           "是否保存?","是否保存",//③
                       JOptionPane.YES_NO_CANCEL_OPTION) == JOptionPane.YES_OPTION){
                     //保存功能代碼
            //當點關閉,點“是”,要三次纔可以保存,再退出!
                }
            }
          });

 

到後面比如到了執行②或③語句時,出現了要點好幾次才能得到預期結果的問題。

這是因爲每個else if()語句裏都有showConfirmDialog,而系統要一個個進行判斷,每判斷一次,就調用showConfirmDialog,只有選擇了(“是”、“否”或“取消”)後,它才確定這條語句的值,所以哪條語句前有n條這個語句即showConfirmDialog總共被調用了n+1次,也即要點n+!次才能得到預期結果。

 

解決的方法是,只寫一個showConfirmDialog,保存起來,然後通過判斷是否滿足條件再決定是否調用。

代碼:

addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent event) {
                if (selectedFile == null && textArea.getText().equals("")) {
                    System.exit(0);
                } else {
                    int btn = JOptionPane.showConfirmDialog(container, "是否保存?",
                            "是否保存", JOptionPane.YES_NO_CANCEL_OPTION);
                    if (btn == JOptionPane.CANCEL_OPTION) {
                        return;
                    } else if (btn == JOptionPane.NO_OPTION) {
                        System.exit(0);
                    } else {
                       //保存功能代碼
                    }
                 }
            }
          }); 


嘿嘿,各位寫代碼也有點累了吧,特別是深夜的時候是不是覺得應該有點喫的就更好了?

可以到本人開的小店“小灰灰休閒美食”店買點休閒食品哦,既滿足食慾又可以放鬆哈子,當然平時也要喫是吧,也可以買來送朋友哦!
 




 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章