- /*
- * 事件监听与处理
- */
- package com.test.tank;
- import javax.swing.*;
- import javax.swing.border.Border;
- import java.awt.*;
- import java.awt.event.*;
- public class Test2 extends JFrame implements ActionListener{
- JPanel jp = null;
- JButton jbt1 = null;
- JButton jbt2 = null;
- public static void main(String[] args) {
- Test2 test = new Test2();
- }
- public Test2(){
- jp = new JPanel();
- jbt1 = new JButton("红色");
- jbt1.addActionListener(this); //注册监听 ; this代表Test2这个类(对象)
- jbt1.setActionCommand("red"); //设置命令
- jbt2 = new JButton("蓝色");
- jbt2.addActionListener(this); //注册监听
- jbt2.setActionCommand("blue"); //设置命令
- Other other = new Other();
- jbt2.addActionListener(other); //让Other类的对象也注册监听jbt2
- //添加组件并布局
- this.add(jbt1, BorderLayout.WEST);
- this.add(jp, BorderLayout.CENTER);
- jp.setBackground(Color.black);
- this.add(jbt2, BorderLayout.EAST);
- this.setSize(300, 200);
- this.setTitle("事件监听与处理");
- this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- this.setVisible(true);
- }
- @Override //对事件的处理方法
- public void actionPerformed(ActionEvent e) {
- if(e.getActionCommand().equals("red")){//命令相同,则执行对应操作
- jp.setBackground(Color.red);
- }
- if(e.getActionCommand().equals("blue")){
- jp.setBackground(Color.blue);
- }
- }
- }
- /*
- * 测试:同一个事件可让多个监听者(对象)
- */
- class Other implements ActionListener{
- @Override //也必须重写对事件的处理方法
- public void actionPerformed(ActionEvent e) {
- if(e.getActionCommand().endsWith("blue")){
- System.out.println("其他对象也监听必处理了jbt2事件源");
- }
- }
- }
Java图形界面——事件监听与处理
最新推荐文章于 2022-09-07 18:00:05 发布