我写了一个pc logo的swing界面,主体是一个jframe现在自己继承jfilechooser写了一个chooser
当我想退出的时候要保存输入的命令我想按退出的时候提醒保存,然后弹出一个加了我的chooser的一个frame来选择保存路径private void exit(){
if(edit.isChanged()){
if((JOptionPane.showConfirmDialog(null, "当前文件已经经过修改,是否需要保存文件?","保存文件",
JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION)){
save_File();
}
}
if(!dialogFrame.isShowing()&&(JOptionPane.showConfirmDialog(null, "你确定要退出My PC Logo吗? ","退出",JOptionPane.YES_NO_OPTION)
== JOptionPane.YES_OPTION)){
f.dispose();
System.exit(0);
}
}
private void save_File(){
if(fileIsNew){
//新建的文件需要指定文件存储路径
fileChooser_control = 1;
fileChooser.setApproveButtonText("保存");
fileChooser.addChoosableFileFilter(fileFilter);
dialogFrame.getContentPane().add(fileChooser);
dialogFrame.setSize(550, 350);
dialogFrame.setTitle("请输入文件名!");
dialogFrame.setVisible(true);

}else{
try{
edit.saveFile(fileN);
paintBoardArea.savePaintBoard(fileN.substring(0, fileN.length()-4));
}catch(Exception ex){
ex.printStackTrace();
}
}
}保存之后就不能直接退出而是要再按一次退出才可以选择退出,怎样才能像记事本那样保存完了就直接退出。我怀疑着了出现了多线程,希望有人来教教我,谢谢!

解决方案 »

  1.   


    !dialogFrame.isShowing()
    //if条件中的这个不要了你的savefile是不是在另外一个线程中做的?
    如果你的程序中只有一个主窗体,没有其他隐藏的JFrame的话,
    这句也不要了。直接把JFramedispose掉就可以了,
    程序会自动退出。
    System.exit(0); 
      

  2.   

    !dialogFrame.isShowing()
    //if条件中的这个不要了
    你的第二个判断是JOptionPane.NO_OPTION不是
    JOptionPane.YES_OPTION吧?