addWindowListener(new WindowAdapter() {
             public void windowClosing(WindowEvent e) {
                 int dialog=JOptionPane.showConfirmDialog(null,"是否保存表中信息","选                                                  择",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE);
  //dialog=0选择:是
                                 if(dialog==0){
//保存
}
                                 //dialog==1 选择:否
 else if(dialog==1){
                                 dispose();不保存
 } 
                                 //dialog==2选择:取消,dialog==-1:当用户都不选直接关掉对话框时
                                 else if(dialog==2||dialog==-1){
                                 ????这该怎么写?就是关闭了对话框,而不关闭原窗口。
 } 
                                 
 }
        });

解决方案 »

  1.   

    dispose();
    当然会把原窗口关了啊。
    JOptionPane.showConfirmDialog这个出现的是模态对话框。
    程序执行到if(dialog==0)的时候对话框已经关掉了。不用你专门去处理。
      

  2.   

    哎,还是不行啊, if(dialog==2||dialog==-1)我不想关闭原窗口,但是自动关了。挡在对话框中选取消时dialog==2,我不想关闭原窗口该怎么写?
      

  3.   

    还没解决吗.
    如果说????处不写任何东西会使JFrame也关掉的话也许是你用的监听方式错了.
      

  4.   

    还没有解决。监听方式该怎么写不是addWindowListener(new WindowAdapter() { 
                public void windowClosing(WindowEvent e) { 
    这么写吗?
    如果你知道的话,帮忙写一下吧。谢谢!
      

  5.   

    addWindowListener(new WindowAdapter() { 
                public void windowClosing(WindowEvent e) { 
                    int dialog=JOptionPane.showConfirmDialog(null,"是否保存表中信息","选                                                  择",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE); 
      //dialog=0选择:是 
                                    if(dialog==0){ 
    //保存 

                                    //dialog==1 选择:否 
    else if(dialog==1){ 
                                    dispose();不保存 

                                    //dialog==2选择:取消,dialog==-1:当用户都不选直接关掉对话框时 
                                    else if(dialog==2||dialog==-1){ 
                                 
                                    ????这该怎么写?就是关闭了对话框,而不关闭原窗口。 

                                    

            });
    你不用那么麻烦的    就写   if(dialog=JOptionPane.YES_OPTION){
                                  //可以为空  也就是说我没判定它   它自己调用自己的方法你自动点击的时候它就回销毁自己了
                                } 
      

  6.   

    import java.awt.BorderLayout;
    import java.awt.event.WindowEvent;import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.JTextArea;public class tswing extends JFrame {
        JTextArea jta = null;    tswing() {
            this.setBounds(100, 100, 500, 600);
            this.setVisible(true);
            jta = new JTextArea();
            this.getContentPane().add(jta, BorderLayout.CENTER);
            this.setVisible(true);    }    protected void processWindowEvent(WindowEvent e) {
            if (e.getID() == WindowEvent.WINDOW_CLOSING) {            int dialog = JOptionPane.showConfirmDialog(null, "close the window?", "choose",
                    JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE);
                if (dialog == 0) {
                    dispose();
                    System.out.println("you choose yes");
                } else if (dialog == 1) {
                    jta.setText("you choose no");
                } else if (dialog == 2 || dialog == -1) {
                    jta.setText("you choose cancle");
                }
            }    }    public static void main(String[] args) {
            new tswing();
        }
    }
      

  7.   

    不能用windowClosing 事件,这个事件是在窗口关闭的过程中才会触发的。
    processWindowEvent 是在窗口的某个动作发生之前触发,它通过WindowEvent
    的id 来判断窗口到底是要做什么动作。打个比方,windowClosing 就好比头已经
    砍了,然后才拿来了免死金牌,可惜已经手起刀落,来不及了。而 processWindowEvent 
    则是在午时还没到之前,传来圣旨刀下留人,自然可以留住了。
      

  8.   

    有窗口最小化的事件吗??API好像没有说明!
      

  9.   

    有最小化事件的,好像是WindowStatus有个Iconed就是最小化状态