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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© viliv715 中级黑马   /  2014-9-12 11:24  /  673 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在GUI学习列出目录的例子中,毕老师是在文本框和按钮上判断回车来列出目录的,如果在按钮上添加addKeyListener的keyPressed监听,那么只要按钮是选中状态,点击空格也可以达到目的(下面代码有演示)。但是给文本框添加addActionListener的actionPerformed监听,没有判断回车,点击回车也可以实现效果,是因为只有回车可以激活actionPerformed事件监听吗?代码如下:
  1. import java.awt.Button;
  2. import java.awt.Dialog;
  3. import java.awt.FlowLayout;
  4. import java.awt.Frame;
  5. import java.awt.Label;
  6. import java.awt.TextArea;
  7. import java.awt.TextField;
  8. import java.awt.event.ActionEvent;
  9. import java.awt.event.ActionListener;
  10. import java.awt.event.KeyAdapter;
  11. import java.awt.event.KeyEvent;
  12. import java.awt.event.WindowAdapter;
  13. import java.awt.event.WindowEvent;
  14. import java.io.File;
  15. class MyFrame {
  16.         private Frame f;
  17.         private Button b;
  18.         private TextField tf;
  19.         private TextArea ta;
  20.         private Dialog d;
  21.         private Label lab;
  22.         private Button okBtn;
  23.         MyFrame() {
  24.                 init();
  25.         }
  26.         void init() {
  27.                 f = new Frame("我的电脑");
  28.                 f.setBounds(300, 100, 600, 500);
  29.                 f.setLayout(new FlowLayout());
  30.                 b = new Button("转到");
  31.                 tf = new TextField(60);
  32.                 ta = new TextArea(25, 70);
  33.                
  34.                 d=new Dialog(f,"tishi xinxi",true);
  35.                 d.setBounds(400, 200, 240, 150);
  36.                 d.setLayout(new FlowLayout());
  37.                 lab= new Label();
  38.                 okBtn= new Button("queding");
  39.                
  40.                 d.add(lab);
  41.                 d.add(okBtn);
  42.                
  43.                 f.add(tf);
  44.                 f.add(b);
  45.                 f.add(ta);
  46.                 f.setVisible(true);
  47.                 action();
  48.         }
  49.                 //窗体上的操作
  50.         void action() {
  51.                 f.addWindowListener(new WindowAdapter() {
  52.                         public void windowClosing(WindowEvent e) {
  53.                                 System.exit(0);
  54.                         }
  55.                 });
  56.                 buttonAction();
  57.                 keyAction();
  58.         }
  59.         void keyAction(){
  60.         //设置键盘监听器,当输入enter键的时候实现和点击鼠标同样的功能!
  61.                 b.addKeyListener(new KeyAdapter() {
  62.                         public void keyPressed(KeyEvent e){
  63.                                 String dirPath = tf.getText();//  获取文本(我们想验证的是路径),接下来获取文件
  64.                                 File file = new File(dirPath);//  获取文件
  65.                                 if (file.exists() && file.isDirectory()) {//  判断,存在否以及是否是文件夹
  66.                                         ta.setText("");//  如果符合条件的话,清空以前的数据;
  67.                                         String[] names = file.list();
  68.                                         for (String name : names) {
  69.                                                 ta.append(name + "\r\n");
  70.                                         }
  71.                                         System.out.println("=======");
  72.                                 } else {
  73.                                         ta.setText("");
  74.                                         ta.append("对不起,请确认您输入的是路径 !");
  75.                                 }
  76.                                 System.out.println(e.getKeyCode());
  77.                         }
  78.                 });
  79.                 tf.addActionListener(new ActionListener() {
  80.                         public void actionPerformed(ActionEvent e) {
  81.                                 String dirPath = tf.getText();//  获取文本(我们想验证的是路径),接下来获取文件
  82.                                 File file = new File(dirPath);//  获取文件
  83.                                 if (file.exists() && file.isDirectory()) {//  判断,存在否以及是否是文件夹
  84.                                         ta.setText("");//  如果符合条件的话,清空以前的数据;
  85.                                         String[] names = file.list();
  86.                                         for (String name : names) {
  87.                                                 ta.append(name + "\r\n");
  88.                                         }
  89.                                         //System.out.println("=======");
  90.                                 } else {
  91.                                         ta.setText("");
  92.                                         ta.append("对不起,请确认您输入的是路径 enter!");
  93.                                 }
  94.                         }
  95.                 });
  96.         }
  97.         void buttonAction() {
  98.                 b.addActionListener(new ActionListener() {
  99.                         public void actionPerformed(ActionEvent e) {
  100.                                 String dirPath = tf.getText();//  获取文本(我们想验证的是路径),接下来获取文件
  101.                                 File file = new File(dirPath);//  获取文件
  102.                                 if (file.exists() && file.isDirectory()) {//  判断,存在否以及是否是文件夹
  103.                                         ta.setText("");//  如果符合条件的话,清空以前的数据;
  104.                                         String[] names = file.list();
  105.                                         for (String name : names) {
  106.                                                 ta.append(name + "\r\n");
  107.                                         }
  108.                                         //System.out.println("=======");
  109.                                 } else {
  110.                                         d.setVisible(true);
  111.                                 }
  112.                         }
  113.                 });
  114.         }
  115. }
  116. public class MyWinDemo {
  117.         public static void main(String[] args) {
  118.                 new MyFrame();
  119.         }
  120. }
复制代码



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马