在你的程序里面加一个变量private int returnCode = -1 ;//按整个Dialog右上的"关闭"
当按下"确定",returnCode = 0 ;
当按下"取消", returnCode = 1 ;
这样三种状态不就确定下来了嘛

解决方案 »

  1.   

    我试过这样子,问题是退出该对话框后,这个值返回不了
    我用一个String backInfo来标志它,但是我确定退出后,backInfo居然还是默认值。
     void jBOk_actionPerformed(ActionEvent e) {
        backInfo = "OK";
        this.dispose();
      }
      public String getBackInfo() {
        return backInfo;
      }
    调用ShowMsg sm = new ShowMsg();
        sm.show();
        String backInfo = sum.getBackInfo();
        System.out.println(backInfo);//值没有改变
      

  2.   

    U can read the sources of JDK  ,It how to get the SelectValue JDialog dialog = pane.createDialog(parentComponent, title);
         dialog.show();
         Object selectedValue = pane.getValue();
      

  3.   

    你没有返回值的原因是dialog.show()在主frame里面会继续往下执行
    所以需要在你扩展JDialog里面(不妨为NewDialog),构造函数最好带上参数(Frame owner, boolean modal)//modal为真是就是在调用这个dialog时主页面不可选……,也就是主页面里面的程序不会继续往下执行,类似showModalDialog
    另外你要返回按钮的属性值来判断是哪个按钮退出。这很好办。
    在主Frame里面重写按钮的事件,即写一个class extends NewDialog吧(扩展你自己写的哪个Dialog)。
    比如在你的主frame里面定义一个String bakeInfo;
      class NewDialogInfo extends NewDialog{
        public NewDialogInfo (Frame owner, boolean modal) {
          super(owner, modal);
        }
        void jBOK_actionPerformed(ActionEvent e) {
          backInfo = "OK";
          this.dispose();
        }
      }
    需要调用NewDialog的时候使用:
        backInfo = "NO";
        NewDialogInfo newd = new NewDialogInfo(this, true);
        sumi.show();
    按确定退出,backInfo就会置成OK,我试过,可以成功。
      

  4.   

    to qiyao(qi) 
    主Frame代码太长,不好贴
    我自己扩展的dialog很简单,就是一个按钮罢了
    to  alphazhao(绿色咖啡) 
    我试试你的,成功的话回头结贴