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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高鑫 中级黑马   /  2012-7-12 23:56  /  4105 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 高鑫 于 2012-7-13 14:58 编辑
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import java.io.*;

  4. class MyWindowDemo
  5. {
  6.         private Frame f;
  7.         private TextField tf;
  8.         private Button but,okBut;
  9.         private TextArea ta;
  10.         private Dialog d;
  11.         private Label lab;
  12.         
  13.         MyWindowDemo()
  14.         {
  15.                 init();        
  16.         }
  17.         public void init()
  18.         {
  19.                 f=new Frame("my window");
  20.                 f.setBounds(300,100,600,500);
  21.                 f.setLayout(new FlowLayout());
  22.                
  23.                 tf=new TextField(60);
  24.                 but=new Button("转到");
  25.                 ta=new TextArea(25,70);
  26.                
  27.                 d=new Dialog(f,"提示信息",true);
  28.                 d.setBounds(400,200,240,150);
  29.                 d.setLayout(new FlowLayout());
  30.                
  31.                 lab=new Label();
  32.                 okBut=new Button("确定");
  33.                 d.add(lab);
  34.                 d.add(okBut);
  35.                                 
  36.                 f.add(tf);
  37.                 f.add(but);
  38.                 f.add(ta);
  39.                
  40.                 myEvent();
  41.                 f.setVisible(true);        
  42.         }
  43.         private void myEvent()
  44.         {
  45.                 d.addWindowListener(new WindowAdapter()
  46.                 {
  47.                         public void windowClosing(WindowEvent e)
  48.                         {
  49.                                 d.setVisible(false);
  50.                         }        
  51.                 });
  52.                 okBut.addWindowListener(new WindowAdapter()
  53.                 {
  54.                         public void windowClosing(WindowEvent e)
  55.                         {
  56.                                 d.setVisible(false);
  57.                         }        
  58.                 });
  59.                 tf.addKeyListener(new KeyAdapter()
  60.                 {
  61.                         public void keyPressed(KeyEvent e)
  62.                         {
  63.                                 if(e.getKeyCode()==KeyEvent.VK_ENTER)
  64.                                 showDir();
  65.                         }        
  66.                 });
  67.                 but.addActionListener(new ActionListener()
  68.                 {
  69.                         public void actionPerformed(ActionEvent e)
  70.                         {
  71.                                 showDir();
  72.                         }
  73.                 });
  74.                 f.addWindowListener(new WindowAdapter()
  75.                 {
  76.                         public void windowClosing(WindowEvent e)
  77.                         {
  78.                                 System.exit(0);
  79.                         }
  80.                 });
  81.         }
  82.                 private void showDir()
  83.                 {
  84.                                 String dirPath=tf.getText();
  85.                                 File dir=new File(dirPath);
  86.                                 if(dir.exists()&&dir.isDirectory())
  87.                                 {
  88.                                         ta.setText("");
  89.                                         String [] names=dir.list();
  90.                                         for(String name:names)
  91.                                         {
  92.                                                 ta.append(name+"\r\n");
  93.                                         }
  94.                                 }
  95.                                 else
  96.                                 {
  97.                                         String info="输入信息有误"+dirPath+"请重输";
  98.                                         lab.setText(info);
  99.                                         d.setVisible(true);        
  100.                                 }
  101.                 }        

  102.         public static void main(String[]args)
  103.         {
  104.                         new MyWindowDemo();
  105.         }
  106. }






复制代码
程序哪里出问题了,为什么点窗口无法关闭程序??求指点

4 个回复

倒序浏览
本帖最后由 王冰 于 2012-7-13 00:22 编辑

import java.awt.*;
import java.awt.event.*;
import java.io.*;
class MyWindowDemo
{
        private Frame f;
        private TextField tf;
        private Button but,okBut;
        private TextArea ta;
        private Dialog d;
        private Label lab;
        
        MyWindowDemo()
        {
                init();        
        }
        public void init()
        {
                f=new Frame("my window");
                f.setBounds(300,100,600,500);
                f.setLayout(new FlowLayout());
               
                tf=new TextField(60);
                but=new Button("转到");
                ta=new TextArea(25,70);
               
                d=new Dialog(f,"提示信息",true);
                d.setBounds(400,200,240,150);
                d.setLayout(new FlowLayout());
               
                lab=new Label();
                okBut=new Button("确定");
                d.add(lab);
                d.add(okBut);
                                
                f.add(tf);
                f.add(but);
                f.add(ta);
               
                myEvent();
                f.setVisible(true);        
        }
        private void myEvent()
        {
                d.addWindowListener(new WindowAdapter()
                {
                        public void windowClosing(WindowEvent e)
                        {
                                d.setVisible(false);
                        }        
                });
                okBut.addWindowListener(new WindowAdapter()
                {
                        public void windowClosing(WindowEvent e)
                        {
                                d.setVisible(false);
                        }        
                });
                tf.addKeyListener(new KeyAdapter()
                {
                        public void keyPressed(KeyEvent e)
                        {
                                if(e.getKeyCode()==KeyEvent.VK_ENTER)
                                showDir();
                        }        
                });
                but.addActionListener(new ActionListener()
                {
                        public void actionPerformed(ActionEvent e)
                        {
                                showDir();
                        }
                });
                f.addWindowListener(new WindowAdapter()
                {
                        public void windowClosing(WindowEvent e)
                        {
                                System.exit(0);
                        }
                });
        }
                private void showDir()
                {
                                String dirPath=tf.getText();
                                File dir=new File(dirPath);
                                if(dir.exists()&&dir.isDirectory())
                                {
                                        ta.setText("");
                                        String [] names=dir.list();
                                        for(String name:names)
                                        {
                                                ta.append(name+"\r\n");
                                        }
                                }
                                else
                                {
                                        String info="输入信息有误"+dirPath+"请重输";
                                        lab.setText(info);
                                        d.setVisible(true);        
                                }
                }        
        public static void main(String[]args)
        {
                        new MyWindowDemo();
        }
}

你那红色部分的代码有错误,按钮不能添加addWindowListener,一般可以添加addActionListener,代码应该改为如下样子程序就可以正常运行了
okBut.addActionListener(new ActionListener()
{
            public void actionPerformed(ActionEvent e)
            {
                    d.setVisible(false);
            }
});

点评

改了之后还是不行啊,难道是我的JAVA有问题??  发表于 2012-7-13 00:46
回复 使用道具 举报
本帖最后由 王宝康 于 2012-7-13 01:11 编辑

package awt;

import java.awt.*;
import java.awt.event.*;
import java.io.*;

class MyWindowDemo
{
        private Frame f;
        private TextField tf;
        private Button but,okBut;
        private TextArea ta;
        private Dialog d;
        private Label lab;
        
        MyWindowDemo()
        {
                init();        
        }
        public void init()
        {
                f=new Frame("my window");
                f.setBounds(300,100,600,500);
                f.setLayout(new FlowLayout());
               
                tf=new TextField(60);
                but=new Button("转到");
                ta=new TextArea(25,70);
               
                d=new Dialog(f,"提示信息",true);
                d.setBounds(400,200,240,150);
                d.setLayout(new FlowLayout());
               
                lab=new Label();
                okBut=new Button("确定");
                d.add(lab);
                d.add(okBut);
                                
                f.add(tf);
                f.add(but);
                f.add(ta);
               
                myEvent();
                f.setVisible(true);        
        }
        private void myEvent()
        {
                d.addWindowListener(new WindowAdapter()
                {
                        public void windowClosing(WindowEvent e)
                        {
                                d.setVisible(false);
                        }        
                });
                f.addWindowListener(new WindowAdapter()
                {
                        public void windowClosing(WindowEvent e)
                        {
                                d.setVisible(false);
                        }        
                });
                tf.addKeyListener(new KeyAdapter()
                {
                        public void keyPressed(KeyEvent e)
                        {
                                if(e.getKeyCode()==KeyEvent.VK_ENTER)
                                showDir();
                        }        
                });
                but.addActionListener(new ActionListener()
                {
                        public void actionPerformed(ActionEvent e)
                        {
                                showDir();
                        }
                });
              f.addWindowListener(new WindowAdapter() {//此处可以把事件监听器注册到窗体本身
                        public void windowClosing(WindowEvent e)
                        {
                                System.exit(0);
                        }
                });      }
                private void showDir()
                {
                                String dirPath=tf.getText();
                                File dir=new File(dirPath);
                                if(dir.exists()&&dir.isDirectory())
                                {
                                        ta.setText("");
                                        String [] names=dir.list();
                                        for(String name:names)
                                        {
                                                ta.append(name+"\r\n");
                                        }
                                }
                                else
                                {
                                        String info="输入信息有误"+dirPath+"请重输";
                                        lab.setText(info);
                                        d.setVisible(true);        
                                }
                }        

        public static void main(String[]args)
        {
                        new MyWindowDemo();
        }
}

你的窗口关闭事件应该注册到窗体本身,你代码中注册到了按钮上了,你可以试下。
回复 使用道具 举报
王冰 发表于 2012-7-13 00:16
import java.awt.*;
import java.awt.event.*;
import java.io.*;

不可能啊,我改了之后运行很正常啊
回复 使用道具 举报
我试了。可以关闭了
okBut.addActionListener(new ActionListener()

  {

             public void actionPerformed(ActionEvent e)

             {
                d.setVisible(false);
                              

              }
                                                  

   });
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马