监听器

这篇博客详细介绍了Java中的事件监听机制,包括鼠标事件监听器、键盘事件监听器和动作事件监听器。通过一个简单的程序展示了如何使用这三个监听器,模拟了一盏灯的控制:光标进入感应区域(鼠标监听器)、手动开关(动作监听器)和红外遥控(键盘监听器)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

整理一下java监听器有关的内容,写一个简单的程序使用一下三种监听器。
说到事件监听机制,就会涉及到三方面:
1.事件,也就是用户用外部设备操作组件;
2.事件源,也就是正在操作的这个组件,同时这也是被监听的对象;
3.监听器,监听器要被添加到事件源上面,并监听事件源上发生的事件。
JAVA中的三种事件监听器为:鼠标事件监听器(MouseListener)、键盘事件监听器(KeyListener)、动作事件监听器(ActionListener),分别对应着监听鼠标事件、键盘事件、动作事件。
鼠标事件中主要包括鼠标按键的按下、松开、鼠标位置等,而键盘事件包括键盘按键的按下、松开等,动作事件则关注的是按钮的点击,虽然鼠标事件和动作事件主要都由鼠标来控制,但是他们的关注点却是不同的。

定义监听器时,如果用语句:
public class 类名 implement MouseListener/ KeyListener/ ActionListener{ }

这时,由于MouseListener、KeyListener、ActionListener都属于接口,因此类中必须实现接口的所有方法。

接下来用一个简单的程序使用一下java给出的这三种监听器,首先我们有一盏灯,灯可以用手动开关控制、可以用感应开关控制,也可以用遥控器来遥控,灯打开后会进行输出。
首先创建一个窗体,用来加入感应区域、开关和遥控接收区。
//创建窗体并设置窗体大小、位置、关闭的方法、是否显示、布局
Jframe frame = new JFrame();
frame.setSize(1000,1000);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setLayout(new FlowLayout());
首先加入感应区域,把光标移入感应区域,灯就会点亮,这里要用到的就是鼠标监听事件,我们先把监听器代码写好:
public class InductiveListener implements MouseListener {
public void mouseClicked(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {
System.out.println(“感应成功,灯被打开了!”);
}
public void mouseExited(MouseEvent e) {}
}
然后在主程序窗体中加入感应区域:
//感应区域
JPanel reactionPanel = new JPanel();
reactionPanel.setSize(1000,500);
reactionPanel.setPreferredSize(new Dimension(1000,500));
reactionPanel.setBackground(Color.white);
frame.add(reactionPanel,BorderLayout.SOUTH);
JLabel label1 = new JLabel(" 感应区域 ");
reactionPanel.add(label1);
//创建并给感应区域加上监听器
InductiveListener inductiveListener = new InductiveListener();
reactionPanel.addMouseListener(inductiveListener);
接下来添加手动开关,并创建监听器,当我们点击按钮时,灯会打开,因此这是动作监听事件,监听器代码:
public class SwitchListener implements ActionListener {

public void actionPerformed(ActionEvent e) {
System.out.println(“按下开关,灯被打开了!”);
}
}
在主程序添加开关按钮,并给按钮添加监听器:
JButton button1 = new JButton(“开灯”);
frame.add(button1);
SwitchListener switchListener = new SwitchListener();
button1.addActionListener(switchListener);

最后是添加红外遥控功能,先添加一个按钮作为红外接受器,光标点击后聚焦,再用键盘键入任何按钮,都可以操控灯打开。
最开始把键盘监听器添加到整个窗体上,但是无法监听,即使切换英文输入/点击窗体也一样,后来发现添加到按钮上时,先点击一下按钮聚焦后才可以监听成功。查询资料后发现之后可聚焦元素(Input,Textarea,Button等)聚焦后才可以监听键盘事件。
这里要用到键盘监听器了。监听器代码:
public class RemoteListener implements KeyListener {
public void keyTyped(KeyEvent e) {}
public void keyPressed(KeyEvent e) {}
public void keyReleased(KeyEvent e) {
System.out.println(“操控成功!灯被打开了”);
}
}
主程序中加入:
JButton button2 = new JButton(“红外接收器”);
frame.add(button2);
RemoteListener remoteListener = new RemoteListener();
button2.addKeyListener(remoteListener);
最后在主程序中加入主方法
public static void main (String[] args) {
Light light = new Light();
light.TurnOnLight();
}
搞定,运行一下看看效果:
把光标移到上面的感应区域,输出感应成功,灯被打开了!

点击开灯按钮,输出:按下开关,灯被打开了!

按任意键时,会输出:操控成功,灯被打开了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值