整理一下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(); } 搞定,运行一下看看效果:
