Dev_Nick

导航

GUI编程(五)-----事件监听

事件监听器主要包含:动作事件监听器、鼠标事件监听器和键盘事件监听器三种。

动作监听器

代码如下:

 1 public static void main(String[] args) {
 2         JFrame frame = new JFrame("窗体");
 3         JButton button = new JButton("点我啊");
 4         frame.add(button);
 5         //给按钮添加动作监听器     动作时间监听器对于鼠标点击以及空格键都会起作用的。
 6         button.addActionListener(new ActionListener() {
 7             
 8             //当按钮被点击的时候,就会调用actionPerformed的方法。 
 9             @Override
10             public void actionPerformed(ActionEvent e) {  // ActionEvent 当前按钮被点击的时候,jvm就会把对应 的时间传递ActionEvent,并且调用actionPerformed方法。
11                 //System.out.println("哎呀,被点了...");
12                 JButton button =(JButton) e.getSource(); //getSource() 获取到事件源
13                 if(button.getText().equals("点我啊")){
14                     button.setText("点他吧");
15                 }else{
16                     button.setText("点我啊");
17                 }
18                 
19             }
20         });
21         frame.setSize(200, 200);
22         frame.setLocationRelativeTo(null);
23         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
24         frame.setVisible(true);
25     }
View Code

鼠标事件监听器

代码如下:

 1 public static void main(String[] args) {
 2         JFrame frame = new JFrame("鼠标事件监听器");
 3         JButton button = new JButton("按钮");
 4         frame.add(button);
 5         //给按钮添加鼠标事件监听器
 6         /*button.addMouseListener(new MouseListener() {
 7             
 8             @Override
 9             public void mouseReleased(MouseEvent e) {
10                 System.out.println("鼠标松开...");
11                 
12             }
13             
14             @Override
15             public void mousePressed(MouseEvent e) {
16                 System.out.println("鼠标按下..");
17             }
18             
19             @Override
20             public void mouseExited(MouseEvent e) {
21                 System.out.println("鼠标移出...");
22             }
23             
24             @Override
25             public void mouseEntered(MouseEvent e) {
26                 System.out.println("鼠标进入...");
27             }
28             
29             @Override
30             public void mouseClicked(MouseEvent e) {
31                 System.out.println("鼠标单击..");
32             }
33         });
34         
35         添加鼠标监听器的时候我只使用 到单击事件,但是目前要我实现所有的方法??
36         解决方案: 适配器。适配器是实现了MouseListener方法的所有方法,但是实现的方法全部都是空实现。
37         */
38         
39         button.addMouseListener(new MouseAdapter() {
40 
41             @Override
42             public void mouseClicked(MouseEvent e) {
43 //                System.out.println("鼠标单击了..");
44                 if(e.getClickCount()==2){
45                     System.out.println("双击了..");
46                 }
47                 
48             }
49             
50             
51         });
52         frame.setSize(200, 200);
53         frame.setLocationRelativeTo(null);
54         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
55         frame.setVisible(true);
56     }
View Code

键盘事件监听器

代码如下:

 1 public static void main(String[] args) {
 2         JFrame frame = new JFrame("键盘事件监听器");
 3         JButton button = new JButton("按钮");
 4         frame.add(button);
 5         //给按钮添加键盘事件监听器
 6         /*button.addKeyListener(new KeyListener() {
 7             
 8             @Override
 9             public void keyTyped(KeyEvent e) {
10                 System.out.println("键入某个键");
11             }
12             
13             @Override
14             public void keyReleased(KeyEvent e) {
15 //                System.out.println("释放某个键");
16             }
17             
18             @Override
19             public void keyPressed(KeyEvent e) {
20                 System.out.println("按下某个键..");
21             }
22         });*/
23         button.addKeyListener(new KeyAdapter() {
24             @Override
25             public void keyPressed(KeyEvent e) {
26 //                System.out.println("按下的字符:"+e.getKeyChar());
27                 //System.out.println("获取键对应的数值:"+ e.getKeyCode());
28                 int code = e.getKeyCode();
29                 switch (code) {
30                 case 38:
31                     System.out.println("上");
32                     break;
33                 case 40:
34                     System.out.println("下");
35                     break;
36                 case 37:
37                     System.out.println("左");
38                     break;
39                 case 39:
40                     System.out.println("右");
41                     break;
42                 default:
43                     break;
44                 }
45             }
46         });
47         frame.setSize(200, 200);
48         frame.setLocationRelativeTo(null);
49         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
50         frame.setVisible(true);
51     }
View Code

实战

文件搜索器

代码如下:

 1 public class FileSearch {
 2     
 3     JFrame frame = new JFrame("文件搜索器");
 4     
 5     JPanel panel = new JPanel();
 6     
 7     JTextField field = new JTextField("请输入目录名...",15);
 8     
 9     JButton button = new JButton("搜索");
10     
11     JTextArea area = new JTextArea(15,15);
12     
13     //滚动条
14 //    ScrollPane bar = new ScrollPane();
15     JScrollPane bar = new JScrollPane(area);
16     
17     
18     public void init(){
19         //先把area添加 到滚动条上。
20 //        bar.add(area);
21         //先把组件添加到panel上
22         panel.add(field);
23         panel.add(button);
24         
25         //给输入框添加事件
26         field.addMouseListener(new MouseAdapter() {
27 
28             @Override
29             public void mouseClicked(MouseEvent e) {
30                 JTextField field =  (JTextField) e.getSource();
31                 if(field.getText().equals("请输入目录名...")){
32                     field.setText("");
33                 }
34             }
35         });
36         
37         //给按钮添加事件监听器
38         button.addActionListener(new ActionListener() {
39             
40             @Override
41             public void actionPerformed(ActionEvent e) {
42                 //获取输入框输入的路径
43                 String path = field.getText();
44                 //使用输入的路径构建一个FIle对象
45                 File dir = new File(path);
46                 //找到目录下的所有子 文件
47                 File[] files = dir.listFiles();
48                 for(File file : files){ // 1208Project  资料
49                     area.setText(area.getText()+ file.getName()+"\r\n");
50                 }
51             }
52         });
53         
54         
55         
56         //把面板添加到frame上
57         frame.add(panel,BorderLayout.NORTH);
58         frame.add(bar);        
59         frame.setSize(300, 400);
60         frame.setLocationRelativeTo(null);
61         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
62         frame.setVisible(true);
63     }
64     
65     public static void main(String[] args) {
66         new FileSearch().init();
67         
68     }
69 }
View Code

 

posted on 2017-01-10 12:36  Dev_Nick  阅读(220)  评论(0编辑  收藏  举报