A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我写了一个练习,和22天09的练习的功能相似,但是有一个问题,就是错误提示窗口关闭事件不执行,大家给看看是什么原因吧:
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import java.io.*;
  4. class GuiDemo6
  5. {
  6.         public static void main(String []args)
  7.         {
  8.                 MyGuiFrame mgf = new MyGuiFrame("文件目录");

  9.         }
  10. }

  11. class MyGuiFrame extends Frame
  12. {
  13.         private TextField tf;
  14.         private TextArea ta;
  15.         private Button btn;

  16.         private Label lab;

  17.         public MyGuiFrame(String title)
  18.         {
  19.                 super(title);
  20.                 setBounds(200,150,500,600);
  21.                 setLayout(new FlowLayout());
  22.                 tf = new TextField(50);
  23.                 btn = new Button("转到");
  24.                 ta = new TextArea(30,65);
  25.                 add(tf);
  26.                 add(btn);
  27.                 add(ta);
  28.                 setVisible(true);
  29.         myEvent();
  30.         }
  31.         private void myEvent()
  32.         {
  33.                 addWindowListener(new WindowAdapter()
  34.                 {
  35.                         public void windowClosing(WindowEvent e)
  36.                         {
  37.                                 setVisible(false);
  38.                                 dispose();
  39.                                 System.exit(0);
  40.                         }
  41.                 });
  42.                 tf.addActionListener(new ActionListener()
  43.                 {
  44.                         public void actionPerformed(ActionEvent e)
  45.                         {                               
  46.                         }
  47.                 });
  48.                 btn.addActionListener(new ActionListener()
  49.                 {
  50.                         public void actionPerformed(ActionEvent e)
  51.                         {
  52.                                 ta.setText("");
  53.                                 getFile();
  54.                         }
  55.                 });
  56.         }

  57.         private void getFile()
  58.         {
  59.                 String str = tf.getText();
  60.                 File file = new File(str);
  61.                 if(file.isDirectory())
  62.                 {
  63.                         String [] names = file.list();
  64.                         for(String name :names)
  65.                         {
  66.                                 ta.append(name+"\r\n");
  67.                         }
  68.                 }
  69.                 else
  70.                 {                       
  71.                         MyDialog dia = new MyDialog(this,"系统提示",true);
  72.                         dia.setStr(str);
  73.                         dia.run();
  74.                 }
  75.         }
  76. }

  77. class MyDialog extends Dialog
  78. {
  79.         private Label lab ;
  80.         private Button btn;
  81.     private String str;
  82.         public MyDialog(Frame f, String s,boolean m)
  83.         {
  84.                 super(f,s,m);
  85.                 setBounds(250,200,280,200);
  86.                 lab = new Label();
  87.                
  88.                 btn = new Button("确定");
  89.                 setLayout(new FlowLayout());
  90.                 add(lab);
  91.                 add(btn);
  92.                
  93.         }
  94.         public void setStr(String str)
  95.         {
  96.                 this.str = str;
  97.         }
  98.         public void run()
  99.         {
  100.                 String info = "对不起!你指定的目录:"+str+"是出错误的!";
  101.                 lab.setText(info);
  102.                 setVisible(true);
  103.                 btn.addActionListener(new ActionListener()
  104.                 {
  105.                         public void actionPerformed(ActionEvent e)
  106.                         {
  107.                                 setVisible(false);
  108.                                 dispose();
  109.                         }
  110.                 });
  111.                 addWindowListener(new WindowAdapter()
  112.                 {
  113.                         public void windowClosing(WindowEvent e)
  114.                         {
  115.                                 setVisible(false);
  116.                                 dispose();
  117.                         }
  118.                 });
  119.         }
  120. }
复制代码
请大家给分析查找一下,谢谢了!

2 个回复

倒序浏览
import java.awt.*;

import java.awt.event.*;

import java.io.*;

class Sy

{

        public static void main(String []args)

        {

                MyGuiFrame mgf = new MyGuiFrame("文件目录");


        }

}


class MyGuiFrame extends Frame

{

        private TextField tf;

        private TextArea ta;

        private Button btn;


        private Label lab;


        public MyGuiFrame(String title)

        {

                super(title);

                setBounds(200,150,500,600);

                setLayout(new FlowLayout());

                tf = new TextField(50);

                btn = new Button("转到");

                ta = new TextArea(30,65);

                add(tf);

                add(btn);

                add(ta);

                setVisible(true);

        myEvent();

        }

        private void myEvent()

        {

                addWindowListener(new WindowAdapter()

                {

                        public void windowClosing(WindowEvent e)

                        {

                                setVisible(false);

                                dispose();

                                System.exit(0);

                        }

                });

                tf.addActionListener(new ActionListener()

                {

                        public void actionPerformed(ActionEvent e)

                        {                                
                        }

                });

                btn.addActionListener(new ActionListener()

                {

                        public void actionPerformed(ActionEvent e)

                        {

                                ta.setText("");

                                getFile();

                        }

                });

        }


        private void getFile()

        {

                String str = tf.getText();

                File file = new File(str);

                if(file.isDirectory())

                {

                        String [] names = file.list();

                        for(String name :names)

                        {

                                ta.append(name+"\r\n");

                        }

                }

                else

                {                        
                        MyDialog dia = new MyDialog(this,"系统提示",true);

                        dia.setStr(str);

                        dia.run();

                }

        }

}


class MyDialog extends Dialog

{

        private Label lab ;

        private Button btn;

                private String str;

        public MyDialog(Frame f, String s,boolean m)

        {

                super(f,s,m);

                setBounds(250,200,280,200);

                lab = new Label();

               
                btn = new Button("确定");

                setLayout(new FlowLayout());

                add(lab);

                add(btn);
                                this.addWindowListener(new WindowAdapter(){    //在此处加上关闭事件就行了.
                                public void windowClosing(WindowEvent e) {
                                        System.exit(1);
                                }
                        });

               
        }

        public void setStr(String str)

        {

                this.str = str;

        }

        public void run()

        {

                String info = "对不起!你指定的目录:"+str+"是出错误的!";

                lab.setText(info);

                setVisible(true);

                btn.addActionListener(new ActionListener()

                {

                        public void actionPerformed(ActionEvent e)

                        {

                                setVisible(false);

                                dispose();

                        }

                });

                addWindowListener(new WindowAdapter()

                {

                        public void windowClosing(WindowEvent e)

                        {

                                setVisible(false);

                                dispose();

                        }

                });

        }

}
楼主你在第85行加入
this.addWindowListener(new WindowAdapter(){    //在此处加上关闭事件就行了.
        public void windowClosing(WindowEvent e) {
                System.exit(1);
        }
});
就可以了,你上面的代码没有给dialog加上关闭监听事件.
回复 使用道具 举报
可以了,但是我有点不明白,为什么上面的Frame类的就能写个函数调用监听,而Dialog必须要把监听写在构造函数里面才行啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马