Java图形界面——事件监听与处理

  1. /* 
  2.  * 事件监听与处理  
  3.  */  
  4. package com.test.tank;  
  5.   
  6. import javax.swing.*;  
  7. import javax.swing.border.Border;  
  8.   
  9. import java.awt.*;  
  10. import java.awt.event.*;  
  11. public class Test2 extends JFrame implements ActionListener{  
  12.     JPanel jp = null;  
  13.     JButton jbt1 = null;  
  14.     JButton jbt2 = null;  
  15.       
  16.     public static void main(String[] args) {  
  17.         Test2 test = new Test2();  
  18.   
  19.     }  
  20.     public Test2(){  
  21.         jp = new JPanel();  
  22.           
  23.         jbt1 = new JButton("红色");  
  24.         jbt1.addActionListener(this);   //注册监听 ; this代表Test2这个类(对象)  
  25.         jbt1.setActionCommand("red");   //设置命令  
  26.           
  27.         jbt2 = new JButton("蓝色");  
  28.         jbt2.addActionListener(this);   //注册监听  
  29.         jbt2.setActionCommand("blue");  //设置命令  
  30.           
  31.         Other other  = new Other();  
  32.         jbt2.addActionListener(other);  //让Other类的对象也注册监听jbt2  
  33.           
  34.             //添加组件并布局  
  35.         this.add(jbt1, BorderLayout.WEST);  
  36.         this.add(jp, BorderLayout.CENTER);  
  37.         jp.setBackground(Color.black);  
  38.         this.add(jbt2, BorderLayout.EAST);  
  39.           
  40.         this.setSize(300200);  
  41.         this.setTitle("事件监听与处理");  
  42.         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  43.         this.setVisible(true);  
  44.     }  
  45.     @Override   //对事件的处理方法  
  46.     public void actionPerformed(ActionEvent e) {  
  47.         if(e.getActionCommand().equals("red")){//命令相同,则执行对应操作  
  48.             jp.setBackground(Color.red);  
  49.         }  
  50.         if(e.getActionCommand().equals("blue")){  
  51.             jp.setBackground(Color.blue);  
  52.         }  
  53.     }  
  54. }  
  55. /* 
  56.  * 测试:同一个事件可让多个监听者(对象) 
  57.  */  
  58. class Other implements ActionListener{  
  59.   
  60.     @Override   //也必须重写对事件的处理方法  
  61.     public void actionPerformed(ActionEvent e) {  
  62.         if(e.getActionCommand().endsWith("blue")){  
  63.             System.out.println("其他对象也监听必处理了jbt2事件源");  
  64.         }  
  65.           
  66.     }  
  67.       
  68. }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值