JAVA学习第十课:java事件处理

1、前提知识
  • 事件:Event
  • 什么是事件?程序对某种操作的响应
  • 使用的包:java.awt.event包
2、如何处理事件?
  • 界面上有一个按钮,点击,控制台打印“Hello”
  • 事件响应对象必须能够监听到事件发出对象的命令
    • 按钮点击命令,由ActionListener监听
  • 事件响应对象必须能够响应事件
    • 按钮点击事件,由actionPerformed函数处理
  • 事件发出对象和事件响应对象绑定
    • 调用按钮的绑定函数:addActionListener
      总结:①实现监听接口;②编写处理函数;③绑定

-举一反三:为什么Java的事件处理机制如此设计?
- 案例:按钮点击,界面上打印“Hello”


import javax.swing.*;
import java.awt.event.*;
class Printer implements ActionListener{  //①实现监听接口
	public void actionPerformed(ActionEvent e){  //②编写处理函数
		System.out.println("Hello");
	}
}

class MyFrame extends JFrame{
	private JButton jbt = new JButton("按钮");
	private JPanel jpl = new JPanel();	
	public MyFrame(){
		this.add(jpl);
		jpl.add(jbt);
		jbt.addActionListener(new Printer());  //③绑定
		this.setSize(300,400);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setVisible(true);		
	}	
	public static void main (String[] args) {
		new MyFrame();
	}
}
3、需要注意的问题
  • 按钮点击命令,由ActionListener监听,Java底层设定
  • 各种事件,分别由什么Listener监听呢?后面一并总结
  • actionPerformed(ActionEvent e)
    • ActionEvent代表什么?封装了事件发出者的信息

         例:界面上两个按钮,点击,分别让界面改变不同颜色
      
package Test;


import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

class MyFrame extends JFrame implements ActionListener{//①实现监听接口
	private JButton jbt = new JButton("按钮");
	private JPanel jpl = new JPanel();	
	public MyFrame(){
		this.add(jpl);
		jpl.add(jbt);
		jbt.addActionListener(this);  //③绑定
		this.setSize(300,400);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setVisible(true);		
	}			
	public void actionPerformed(ActionEvent e){  //②编写处理函数
		jpl.setBackground(Color.yellow);
	}
	public static void main (String[] args) {
		new MyFrame();
	}
}

总结:①实现监听接口;②编写处理函数;③绑定
————以上叫做事件监听机制——————

4、Java事件由对应的Listener监听
  • ***** ActionListener:按钮单击;文本框回车;菜单单击;其他拥有addActionListener函数的控件(见文档)

  • *AdjustmentListener:主要用于类似滚动条等调整功能的控件

  • *FocusListener:主要用于控件获得/失去焦点时响应事件

  • ***ItemListener:用于选项有变化时响应事件(如下拉菜单等)

    • 例:界面上一个下菜单,通过选择可以让界面变颜色
  • ****MouseListener:监听鼠标事件(点击,进入/退出控件区域等)

    • 鼠标进入界面,界面变颜色,退出,变为另一种颜色
  • ****MouseMotionListener:监听鼠标事件(移动拖动)

  • 鼠标在界面上移动,界面标题实时变为鼠标当前坐标值

  • ****KeyListener:监听键盘事件

     案例:一个按钮是黄色,另一个按钮是蓝色
    
package Test;

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

class MyFrame extends JFrame implements ActionListener{//①实现监听接口
	private JButton jbt1 = new JButton("按钮1");
	private JButton jbt2 = new JButton("按钮2");
	private JPanel jpl = new JPanel();	
	public MyFrame(){
		this.add(jpl);
		jpl.add(jbt1);		jpl.add(jbt2);
		jbt1.addActionListener(this);  //③绑定
		jbt2.addActionListener(this);  
		this.setSize(300,400);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setVisible(true);		
	}			
	public void actionPerformed(ActionEvent e){  //②编写处理函数
	    if(e.getSource()==jbt1){
			jpl.setBackground(Color.yellow);
	    }else{
			jpl.setBackground(Color.blue);
	    }
	}
	public static void main (String[] args) {
		new MyFrame();
	}
}
案例:可选列表换颜色
package Test;

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
class MyFrame extends JFrame  implements ItemListener{
	private JComboBox jcb = new JComboBox();
	private JPanel jpl = new JPanel();	
	public MyFrame(){
		jcb.addItemListener(this);
		this.add(jpl);
		jpl.add(jcb);
		jcb.addItem("红");
		jcb.addItem("绿");
		jcb.addItem("蓝");		
		this.setSize(300,400);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setVisible(true);		
	}			
	public void itemStateChanged(ItemEvent e){
		String str = (String)jcb.getSelectedItem();
		if(str.equals("红")){
			jpl.setBackground(Color.red);
		}else if(str.equals("绿")){
			jpl.setBackground(Color.green);
		}else{
			jpl.setBackground(Color.blue);
		}
	}
	public static void main (String[] args) {
		new MyFrame();
	}
}
案例:自动变色
package Test;


import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
class MyFrame extends JFrame  implements MouseListener {
	private JPanel jpl = new JPanel();	
	public MyFrame(){
		this.add(jpl);
		this.addMouseListener(this);
		this.setSize(300,400);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setVisible(true);		
	}			
		
	public void mouseClicked(MouseEvent e){}
	public void mouseEntered(MouseEvent e) {
		jpl.setBackground(Color.red);
	}
	public void mouseExited(MouseEvent e) {
		jpl.setBackground(Color.blue);		
	}
	public void mousePressed(MouseEvent e){} 
	public void mouseReleased(MouseEvent e){} 

	public static void main (String[] args) {
		new MyFrame();
	}
}

总结:
1、Java事件监听机制:三步骤
①实现监听接口;②编写处理函数;③绑定
2、事件监听机制原理
3、Java常见事件监听(举一反三)

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值