如题,比如点击右上方的红叉按钮时,想弹出个对话框让用户确认是否真的退出。

解决方案 »

  1.   


    import java.awt.*;
    import java.awt.event.*;
    class MyFrame extends Frame {
       boolean w;
       public MyFrame()    {
                   
                  setTitle("test");
                  setSize(300, 200);  
                   Panel panel = new Panel();
                  add(panel);
                  addWindowListener(new MyWindowAdapter());
       }
       private class MyWindowAdapter extends WindowAdapter{
         public void windowClosing(WindowEvent wevent){//实现窗口关闭
            弹出个对话框
        }
    }
    }public class MyAdapterDemo{
    public static void main(String[] args) {
         MyFrame frm = new MyFrame();
         frm.show();
    }
    }
      

  2.   


    谢谢!但我要是想通过在JButton里添加actionListener的方式来关闭窗口的话,怎样才能产生这个WindowEvent呢?
    比如
    button.addActionListener(
        new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                 //怎样在这里写关闭窗口的代码才能弹出确认对话框?
            }
        });
      

  3.   


    还有,我用这种方法,用showConfirmDialog来显示出一个确认对话框,但是不管点Yes或No或Cancel它都会退出!应该怎么办才能让它不这样呢?
      

  4.   

    如果是你自定义的按钮,
    那么点击了是不好产生WindowEvent事件的。
    但你为什么一定要产生WindowEvent事件呢。button.addActionListener( 
        new ActionListener() 
        { 
            public void actionPerformed(ActionEvent e) 
            { 
                //这里就是你点击了那个按钮之后的代码了。你点击了这个按钮,就是要关闭窗口,在这之前就是要弹出个确认对话框呗!
                  // showComfirmMessageDialog(不一定是这个,你看下API)
                 //然后if() window.close();else 什么都不做。不就ok了。
            } 
        });
      

  5.   


    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;/**
     * @author bzwm
     *
     */
    public class ConfirmClose extends JFrame{
    public ConfirmClose(){
    super();
    JButton b = new JButton("Exit");
    b.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) {
    buttonClick();
    }
    });

    this.add(b);
    this.setSize(300, 300);
    this.setVisible(true);
    }

    void buttonClick(){
    int flg = javax.swing.JOptionPane.showConfirmDialog(null, "close?");
    if(flg == 0){
    this.setVisible(false);
    }
    }
    public static void main(String args[]){
    new ConfirmClose();
    }
    }
    试试这个