黑马程序员技术交流社区

标题: 当输入错误时 ,为什么 弹出来的对话框,点击关闭和确定都没反应 [打印本页]

作者: 廖理    时间: 2012-5-16 12:33
标题: 当输入错误时 ,为什么 弹出来的对话框,点击关闭和确定都没反应
以下功能要求:在文本框中输入目录,点击转到按钮。将该目录下的文件与文件夹名列在下面的文本域中;
当输入的不是目录时或目录不存在时,弹出对话框,提示出错,请重输入。我们可以点击确定或关闭此对话框,但为什么以下程序,当输入错误时 ,为什么 弹出来的对话框,点击关闭和确定都没反应呢?
import java.awt.*;
import java.io.*;
import java.awt.event.*;

class GUIDemo{
       
        private Frame f = new Frame("窗口_1");
        private TextField tf = new TextField(50);
        private Button b = new Button("转到");
        private TextArea tt = new TextArea(60,60);
       
        GUIDemo(){
                init();
                event();
        }
       
        public void init(){
                f.setBounds(200,200,500,500);
                f.setLayout(new FlowLayout());
                f.add(tf);
                f.add(b);
                f.add(tt);
                f.setVisible(true);
        }
       
        public void event(){
               
               
                                       
                                       
                f.addWindowListener(new WindowAdapter(){
                        public void windowClosing(WindowEvent e){
                                System.exit(0);
                        }
                });
               
                b.addActionListener(new ActionListener(){
                        public void actionPerformed(ActionEvent e){
                                tt.setText("");
                                String str = tf.getText();
                               
                                File ff = new File(str);
                                if(ff.exists()&&ff.isDirectory()){
                                        String[] files = ff.list();
                                        for(String  name : files){
                                                tt.append(name+"\r\n");
                                        }
                                }else{//如果输入格式错误,弹出一个对话框提示
                                        final Dialog d = new Dialog(f,true);
                                        Label l = new Label();
                                        Button but_ok = new Button("确定");
                                        l.setText("输入的"+str+"格式错误,其重输");
                                        d.setBounds(300,300,200,150);
                                        d.setLayout(new FlowLayout());
                                        l.setText("输入的"+str+"格式错误,请重输");
                                        d.add(l);
                                        d.add(but_ok);
                                        d.setVisible(true);
                                        d.addWindowListener(new WindowAdapter(){
                                                public void windowClosing(WindowEvent e){
                                                        System.out.println("haahhaahah");
                                                        d.setVisible(false);
                                                }
                });
                                       
                but_ok.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent e){
                             d.setVisible(false);
                    }
                });
                               
                                }
                       
                        }
                });
        }
       
        public static void main(String[] args){
                GUIDemo g =  new GUIDemo();
        }
}
作者: 云惟桉    时间: 2012-5-16 12:56
  1.                 d.addWindowListener(new WindowAdapter(){
  2.                         public void windowClosing(WindowEvent e){
  3.                                 d.dispose();
  4.                         }
  5.                 });
  6.                 //okButton的监听:1.鼠标;2.Space键(默认)
  7.                 okBut.addActionListener(new ActionListener(){
  8.                         public void actionPerformed(ActionEvent e){
  9.                                 d.dispose();
  10.                         }
  11.                 });
复制代码
楼主的关闭按钮没设置监听动作,肯定关不掉了。
对于确定按钮,楼主可以把动作d.setVisible(false)换成d.dispose(); 将对话框对象释放掉,就没问题了。
代码如上,希望能帮到你噢!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2