感谢大佬:https://blog.csdn.net/LIU_YANZHAO/article/details/72740011?utm_source=blogxgwz1

比如说 按纽的事件,同一个JFrame里可能有多个按钮的事件,为了避免冲突,给每个按钮设置不同的

ActionCommand,在监听时间的时候,用这个做条件区分事件,以做不同的响应

追问

他与getSource有什么区别

回答

getSource()

Returns:

The object on which the Event initially occurred.

依赖于事件对象

getActionCommand()

Returns the command name of the action event fired by this button. If the command name is null (default) then this method returns the label of the button.

依赖于按钮上的字符串

getSource得到的组件的名称,而getActionCommand得到的是标签。

如:Button bt=new Button(“buttons”);

用getSource得到的是bt

而用getActionCommand得到的是:buttons

e.getSource() 返回的当前动作所指向的对象,包含对象的所有信息

e.getActionCommand() 返回的是当前动作指向对象的名称

这里附一个开灯的demo

 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);
}
@Override
public 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);
// }
//方法二:getSource
if(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 getSource()和 getActionCommand()区别的更多相关文章

  1. java.lang.ClassNotFoundException与java.lang.NoClassDefFoundError的区别

    java.lang.ClassNotFoundException与java.lang.NoClassDefFoundError的区别   以前一直没有注意过这个问题,前两天机缘巧合上网查了一下,然后自 ...

  2. java 和javaw 的区别——<转>

    java 和javaw 的区别 javaw.exe用法和java.exe 相同 javaw的程序不在java console 上面显示任何东西,如果在开发程序,就用java,这样可以看到错误提示, 如 ...

  3. java与javac的区别

    1.前提:java分为两部分 一个是编译(javac命令),一个是运行(java命令) 2.java与javac的区别 javac负责的是编译,将.java文件编译成.class文件,当执行javac ...

  4. Java中equal和==区别及String创建过程

    Java中equal和==区别 1.起因 在一段Java代码中,使用了两种实现方式. //第一种命令行输入 int main (String[] args) { if(args[0] == " ...

  5. Objective-C与Java类的一些区别

    Objective-C与Java类的一些区别 OC类和C一样,需要有声明和定义,先上一段OC代码 #import <Foundation/Foundation.h> /* * 声明一个Pe ...

  6. java与javax的区别分析(转)

    Java是一种受C语言影响的编程语言.Java和Javax本质上是与Java编程语言的上下文一起使用的包.实际上Java和Javax没有区别.这只是不同的名字. Java是一种编程语言,受到C语言的影 ...

  7. JAVA线程和进程区别

    1,JAVA线程和进程区别? (1)简单来讲一个运行的程序就是一个进程,一个进程中可以有多个线程(线程是程序执行的最小单元). (2)线程有四种状态:运行,就绪,挂起,结束 (3)使用多线程的好处 使 ...

  8. Java HSSFworkbook,XSSFworkbook,SXSSFworkbook区别简述

    Java HSSFworkbook,XSSFworkbook,SXSSFworkbook区别简述 一.HSSFworkbook,XSSFworkbook,SXSSFworkbook区别简述 用Java ...

  9. Dalvik VM (DVM) 与Java VM (JVM) 的区别?

    Dalvik虚拟机存在于Android系统,JVM是java虚拟机,两者都是虚拟机,本文就对两者进行比较,讲述它们的不同. Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的 ...

随机推荐

  1. <数据结构>XDOJ261.理解哈夫曼树

    问题与解答 问题描述: 假设用于通信的电文由 n(2≤n≤30)个字符组成,字符在电文中出现的频度(权值)为 w1 w2- wn,根据该权值集合构造哈夫曼树,并计算该树的带权路径长度. 输入说明: 输 ...

  2. x86-1-32位x86 处理器编程架构

    x86(32位)-1-32位x86 处理器编程架构 Intel 32 位处理器架构简称IA-32(Intel Architecture,32-bit) x86是指intel的86系列的CPU统称,比如 ...

  3. pip list 精确查找某一模块的方法

    1. 今天搜资料的时候get一项技能: pip list精确查找某一模块 命令如下: pip list | findstr "win32" (此处win32可以替换成任意想查找的模 ...

  4. Nginx_配置文件nginx.conf配置详解

    user nginx nginx ; # Nginx用户及组:用户 组.window下不指定 worker_processes 8; # 工作进程:数目.根据硬件调整,通常等于CPU数量或者2倍于CP ...

  5. spring security 登出操作 详细说明

    1.前言 这里专门 做 spring security 登出操作 的  详细记录 2.操作 (1)目录结构 (2)在security 拦截规则配置文件添加退出登录支持 源码 package com.e ...

  6. Vue养成之路

    目录 Vue系列教程(一)之初识Vue Vue系列教程(二)之Vue进阶 Vue系列继承(三)之Vue-cli脚手架的使用 ... 更新中 基础入门 Vue基础(一)之es6 Vue基础(二)之箭头函 ...

  7. Mysql高性能优化

    一.背景 最近公司项目添加新功能,上线后发现有些功能的列表查询时间很久.原因是新功能用到旧功能的接口,而这些旧接口的 SQL 查询语句关联5,6张表且编写不够规范,导致 MySQL 在执行 SQL 语 ...

  8. HTML相关知识入门

    HTML 注意点 html是不区分大小写的 建议包括嵌套,不要交叉嵌套 文件后缀名可以是.html或.htm 格式 <!------类似于java中类的大括号--------> <h ...

  9. markdownFormat

      对文档编辑主要还是用wps,因为以前毕业论文都是用的它来编排(刚开始用wps毕业论文的时候真的是用的想吐,感觉非常不好用,而且功能太多但对于自己需要的功能又偏偏找不到),用过几次后还觉得用它编辑文 ...

  10. 安装DataX的管理控制台(转)

    原文地址 https://github.com/WeiYe-Jing/datax-web/blob/master/doc/datax-web/datax-web-deploy.md 环境准备 1)基础 ...