黑马程序员技术交流社区

标题: Dialog对话框添加addKeyListener(KeyListener l) 的问题 [打印本页]

作者: 燕国庆    时间: 2012-11-21 22:35
标题: Dialog对话框添加addKeyListener(KeyListener l) 的问题
package cn.guoqing.day01;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class MyWindowDemo1 {
/**
  * @param args
  */
public static void main(String[] args) {
  new MyWindowDemo1();
}

private Frame f;
private TextField tf;
private Button b;
private TextArea ta;
private Dialog d;
private Label l;
private Button okB;
MyWindowDemo1(){
  init();
}
  public void init(){
   f=new Frame("我的窗口");
   tf=new TextField(25);
   b=new Button("转到");
   ta=new TextArea(30,35);
   
   f.setBounds(300, 300, 500, 400);
   f.setLayout(new FlowLayout());
   f.add(tf);
   f.add(b);
   f.add(ta);
   f.setVisible(true);
   
   d=new Dialog(f,"错误对话框!",true);//当为ture时只有处理完对话框后才能继续操作后面的窗体。
   l=new Label();
   okB=new Button("确定");
   d.setBounds(300, 350,400, 340);
   d.setLayout(new FlowLayout());
   d.add(l);
   d.add(okB);
  // d.setVisible(true);
   
   
   myEvent();
   
   
  }
  //为窗体注册监听器,并在监听器的内部添加具体的执行语句。
  public void myEvent(){
   //当对话框出现关闭时使其设置为不可见
   d.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e){
     d.setVisible(false);
     }
   });
//紧挨着的下面的这一小段代码,为什么在执行的时候,按回车键时为什么Dialog对话框为什么还是可见的,而不是不可见的,不知道哪里有问题?
   d.addKeyListener(new KeyAdapter(){
    public void keyPressed(KeyEvent e){
     if(e.getKeyCode()==KeyEvent.VK_ENTER)
     d.setVisible(false);
    }
   });
  
  //当对话框出现关闭时使其设置为不可见
   okB.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
     d.setVisible(false);
    }
   });
   //为Label标签添加键盘监听器,判断是否为回车键
   tf.addKeyListener(new KeyAdapter(){
    public void keyPressed(KeyEvent e){
     if(e.getKeyCode()==KeyEvent.VK_ENTER)
      method();
    }
   });
   
   
   
  f.addWindowListener(new WindowAdapter(){
   public void windowClosing(WindowEvent e){
    System.exit(0);
   }
  });
  //以b为事件源,把监听器注册到事件源上,并为监听器添加具体的操作语句。
  b.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent e){
    method();
   }
   
  });
  
  
}
  //将路径判断及其具体的操作方法封装成对象。
  public void method(){
   String pathname=tf.getText();
   File f=new File(pathname);
   if(f.exists()&&f.isDirectory()){
    ta.setText("");
    String[] names=f.list();
    for(String name:names){
     ta.append(name+"\r\n");//每输出一次换一下行
     
    }
   
   }
//当输入的路径不正确时进行的处理
   else{
    String infor="您输入的的路径"+pathname+"不正确,请重新输入!";
    l.setText(infor);
    d.setVisible(true);
   }
   //tf.setText("");  路径执行完时自动清空
  }
}


作者: 应文    时间: 2012-11-21 22:51
本帖最后由 应文 于 2012-11-21 22:55 编辑

//紧挨着的下面的这一小段代码,为什么在执行的时候,按回车键时为什么Dialog对话框为什么还是可见的,而不是不可见的,不知道哪里有问题?
   //这里不是给Dialog添加键盘监听,改成给okB按钮添加键盘监听就可以了。   
    //d.addKeyListener(new KeyAdapter(){   
    okB.addKeyListener(new KeyAdapter(){   
     public void keyPressed(KeyEvent e){
     if(e.getKeyCode()==KeyEvent.VK_ENTER)
     d.setVisible(false);
    }
   });
作者: 燕国庆    时间: 2012-11-22 10:36
应文 发表于 2012-11-21 22:51
//紧挨着的下面的这一小段代码,为什么在执行的时候,按回车键时为什么Dialog对话框为什么还是可见的,而不 ...

那在这里怎样才能给Dialog添加键盘缉拿听器?




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