java ActionListener 接口如何判断触发事件来源。getSource()和 getActionCommand()
ActionListener 接口代码,可以看到e.getSource() 获得触发事件的对象
if(e instanceof MyEvent)//不关注事件源,而关注事件类型时,通过事件类型判断
if(e.getSource() instanceof MyEventSource)//类型已确定,关注事件来源时,通过事件源类型判断
getSource得到的组件的名称,而getActionCommand得到的是标签。
如:Button bt=new Button(“buttons”);
用getSource得到的是bt 而用getActionCommand得到的是:buttons
e.getSource() 返回的当前动作所指向的对象,包含对象的所有信息
e.getActionCommand() 返回的是当前动作指向对象的名称
例:
class MyActionListener implements ActionListener{@Overridepublic void actionPerformed(ActionEvent e){//定义发生ActionEvent 事件时要执行什么。当然,一个监听器是可以监听多个事件源触发的ActionListener的,所以通常都会先判断事件源if(e.getSource() == myButtonOne){...}else if(e.getSource()==myButtonTwo{...}...}
}
package com.liuyanzhao;import java.awt.Button;import java.awt.Color;import java.awt.Frame;import java.awt.Label;import java.awt.Panel;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.WindowConstants;public class Demo2 implements ActionListener {JButton button_open ;JButton button_close;Label label;//这个地方不要用JLable,否则空白符不占位Label label2;public static void main(String[] args) {Demo2 d = new Demo2();d.go();}public void go() {JFrame frame = new JFrame();frame.setSize(300, 100);frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);frame.setVisible(true);JPanel panel = new JPanel();frame.add(panel);label = new Label("灯状态:");label2 = new Label(" ");button_open = new JButton("开灯");button_close = new JButton("关灯");button_open.addActionListener(this);button_close.addActionListener(this);panel.add(label);panel.add(label2);panel.add(button_open);panel.add(button_close);}@Overridepublic void actionPerformed(ActionEvent e) {//方法一:getActionCommand// if(e.getActionCommand()=="开灯") {// label2.setBackground(Color.red);// button_open.setEnabled(false);// button_close.setEnabled(true);// } else if(e.getActionCommand()=="关灯") {// label2.setBackground(Color.black);// button_close.setEnabled(false);// button_open.setEnabled(true);// }//方法二:getSourceif(e.getSource()==button_open) {//button_open不要加引号label2.setBackground(Color.red);button_open.setEnabled(false);button_close.setEnabled(true);} else if(e.getSource()==button_close) {//button_closen不要加引号label2.setBackground(Color.black);button_close.setEnabled(false);button_open.setEnabled(true);}}}
java ActionListener 接口如何判断触发事件来源。getSource()和 getActionCommand()相关推荐
- actionlistener java,Java ActionListener接口
本文概述 每当你单击按钮或菜单项时, 都会通知Java ActionListener.会针对ActionEvent进行通知.可在java.awt.event包中找到ActionListener接口.它 ...
- java中action事件_Java中,()接口可以处理ActionEvent事件_学小易找答案
[单选题]Test中已定义Public float m(float a,float b),在类Test中增加()方法将会编译错误 [单选题]如下代码,()可以使成员变量m被函数fun()直接访问 cl ...
- 如何判断SVG事件对象中的鼠标来源?
在SVG中会经常遇到判断鼠标事件来源的问题,比如:鼠标单击或者双击.滚轮事件等等.这里做一个简单的介绍. 判断鼠标是左键还是右键? 在onclick事件中,if(evt.button==0)则为左击, ...
- oracle 触发器的种类和触发事件
触发器的种类和触发事件 触发器必须由事件才能触发.触发器的触发事件分可为3类,分别是DML事件.DDL事件和数据库事件. 每类事件包含若干个事件,如下所示.数据库的事件是具体的,在创建触发器时要 ...
- oracle触发器 触发事件,oracle 触发器的种类和触发事件
oracle触发器的种类和触发事件,DML触发器,DDL事件触发器,替代触发器,查看触发器 触发器的种类和触发事件 触发器必须由事件才能触发.触发器的触发事件分可为3类,分别是DML事件.DDL事件和 ...
- Java:ActionListener接口
ActionListener动作事件监听器,当你在点击按钮时希望可以实现一个操作就得用到该接口了. ActionListener接口所在包 ActionListener接口在event包中,即在开头引 ...
- java的actionlistener_Java:ActionListener接口
ActionListener动作事件监听器,当你在点击按钮时希望可以实现一个操作就得用到该接口了. ActionListener接口所在包 ActionListener接口在event包中,即在开头引 ...
- java textfield事件_[求助]TextField失去焦点触发事件问题
[求助]TextField失去焦点触发事件问题 在java,awt中.要想在一个TextField输入值后然后失去焦点了,引发一个事件,该怎么做? 请教各位大侠.能否给断小的示例代码. 不胜感激!-- ...
- 动作事件监听器——实现ActionListener接口
package swing; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.A ...
最新文章
- linux下的文件和文件夹的权限问题
- 技巧:利用 Python 实现多任务进程
- AI设计师“鹿班”核心技术公开:如何1秒设计8000张海报?
- CelebA数据集在Linux下解压
- Linux cron 定时执行任务
- 【数据竞赛】Kaggle GM秘技:树模型初始化技巧
- Android style 继承
- array_combine()
- Java Scanner nextLine()方法与示例
- hashmap put复杂度_集合类HashMap,HashTable,ConcurrentHashMap区别?
- block,inline和inline-block
- python基础系列教程——python面向对象编程全解
- 前端使用 geetest 行为验证 web-部署教程
- vue地址选择插件V - Distpicker
- linux如何修改引导分区表,修改引导记录
- 五、隐函数微分法和逆函数导数 六、指数与对数函数导数、对数微分法 七、第一次考试复习
- Walking Robot Simulation
- JavaWeb之JavaScript及应用
- 成吉思汗陵举行戊戌年成吉思汗嗣火祭祀
- Java实现斗地主游戏中洗牌,发牌,牌顺序逻辑