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()相关推荐

  1. actionlistener java,Java ActionListener接口

    本文概述 每当你单击按钮或菜单项时, 都会通知Java ActionListener.会针对ActionEvent进行通知.可在java.awt.event包中找到ActionListener接口.它 ...

  2. java中action事件_Java中,()接口可以处理ActionEvent事件_学小易找答案

    [单选题]Test中已定义Public float m(float a,float b),在类Test中增加()方法将会编译错误 [单选题]如下代码,()可以使成员变量m被函数fun()直接访问 cl ...

  3. 如何判断SVG事件对象中的鼠标来源?

    在SVG中会经常遇到判断鼠标事件来源的问题,比如:鼠标单击或者双击.滚轮事件等等.这里做一个简单的介绍. 判断鼠标是左键还是右键? 在onclick事件中,if(evt.button==0)则为左击, ...

  4. oracle 触发器的种类和触发事件

    触发器的种类和触发事件   触发器必须由事件才能触发.触发器的触发事件分可为3类,分别是DML事件.DDL事件和数据库事件.  每类事件包含若干个事件,如下所示.数据库的事件是具体的,在创建触发器时要 ...

  5. oracle触发器 触发事件,oracle 触发器的种类和触发事件

    oracle触发器的种类和触发事件,DML触发器,DDL事件触发器,替代触发器,查看触发器 触发器的种类和触发事件 触发器必须由事件才能触发.触发器的触发事件分可为3类,分别是DML事件.DDL事件和 ...

  6. Java:ActionListener接口

    ActionListener动作事件监听器,当你在点击按钮时希望可以实现一个操作就得用到该接口了. ActionListener接口所在包 ActionListener接口在event包中,即在开头引 ...

  7. java的actionlistener_Java:ActionListener接口

    ActionListener动作事件监听器,当你在点击按钮时希望可以实现一个操作就得用到该接口了. ActionListener接口所在包 ActionListener接口在event包中,即在开头引 ...

  8. java textfield事件_[求助]TextField失去焦点触发事件问题

    [求助]TextField失去焦点触发事件问题 在java,awt中.要想在一个TextField输入值后然后失去焦点了,引发一个事件,该怎么做? 请教各位大侠.能否给断小的示例代码. 不胜感激!-- ...

  9. 动作事件监听器——实现ActionListener接口

    package swing; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.A ...

最新文章

  1. linux下的文件和文件夹的权限问题
  2. 技巧:利用 Python 实现多任务进程
  3. AI设计师“鹿班”核心技术公开:如何1秒设计8000张海报?
  4. CelebA数据集在Linux下解压
  5. Linux cron 定时执行任务
  6. 【数据竞赛】Kaggle GM秘技:树模型初始化技巧
  7. Android style 继承
  8. array_combine()
  9. Java Scanner nextLine()方法与示例
  10. hashmap put复杂度_集合类HashMap,HashTable,ConcurrentHashMap区别?
  11. block,inline和inline-block
  12. python基础系列教程——python面向对象编程全解
  13. 前端使用 geetest 行为验证 web-部署教程
  14. vue地址选择插件V - Distpicker
  15. linux如何修改引导分区表,修改引导记录
  16. 五、隐函数微分法和逆函数导数 六、指数与对数函数导数、对数微分法 七、第一次考试复习
  17. Walking Robot Simulation
  18. JavaWeb之JavaScript及应用
  19. 成吉思汗陵举行戊戌年成吉思汗嗣火祭祀
  20. Java实现斗地主游戏中洗牌,发牌,牌顺序逻辑

热门文章

  1. substrate node cli
  2. Eclipse的乱码问题是如何解决的
  3. 全方位揭秘!大数据从0到1的完美落地之大数据简介
  4. 关于线程同步的几种方法
  5. 小红书KOC和KOL这两者怎样进行投放?
  6. 欧几里得扩展欧几里得算法及相关的数学证明
  7. 浅谈带宽,网速和流量之间的关系
  8. 2016第七届ACM山东省赛
  9. 关于TCP长连接的一些简单代码
  10. virtualenv virtualenvwrapper