java getSource()和 getActionCommand()区别
感谢大佬: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()区别的更多相关文章
- java.lang.ClassNotFoundException与java.lang.NoClassDefFoundError的区别
java.lang.ClassNotFoundException与java.lang.NoClassDefFoundError的区别 以前一直没有注意过这个问题,前两天机缘巧合上网查了一下,然后自 ...
- java 和javaw 的区别——<转>
java 和javaw 的区别 javaw.exe用法和java.exe 相同 javaw的程序不在java console 上面显示任何东西,如果在开发程序,就用java,这样可以看到错误提示, 如 ...
- java与javac的区别
1.前提:java分为两部分 一个是编译(javac命令),一个是运行(java命令) 2.java与javac的区别 javac负责的是编译,将.java文件编译成.class文件,当执行javac ...
- Java中equal和==区别及String创建过程
Java中equal和==区别 1.起因 在一段Java代码中,使用了两种实现方式. //第一种命令行输入 int main (String[] args) { if(args[0] == " ...
- Objective-C与Java类的一些区别
Objective-C与Java类的一些区别 OC类和C一样,需要有声明和定义,先上一段OC代码 #import <Foundation/Foundation.h> /* * 声明一个Pe ...
- java与javax的区别分析(转)
Java是一种受C语言影响的编程语言.Java和Javax本质上是与Java编程语言的上下文一起使用的包.实际上Java和Javax没有区别.这只是不同的名字. Java是一种编程语言,受到C语言的影 ...
- JAVA线程和进程区别
1,JAVA线程和进程区别? (1)简单来讲一个运行的程序就是一个进程,一个进程中可以有多个线程(线程是程序执行的最小单元). (2)线程有四种状态:运行,就绪,挂起,结束 (3)使用多线程的好处 使 ...
- Java HSSFworkbook,XSSFworkbook,SXSSFworkbook区别简述
Java HSSFworkbook,XSSFworkbook,SXSSFworkbook区别简述 一.HSSFworkbook,XSSFworkbook,SXSSFworkbook区别简述 用Java ...
- Dalvik VM (DVM) 与Java VM (JVM) 的区别?
Dalvik虚拟机存在于Android系统,JVM是java虚拟机,两者都是虚拟机,本文就对两者进行比较,讲述它们的不同. Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的 ...
随机推荐
- jQuery 中使用 DOM 操作节点,对页面中的表格实现增、删、查、改操作
查看本章节 查看作业目录 需求说明: 在 jQuery 中使用 DOM 操作节点,对页面中的表格实现增.删.查.改操作 点击"增加"超链接时,将表格中的第一条数据添加到表格的末尾 ...
- JSON生成Java实体类
https://www.bejson.com/json2javapojo/new/ 至于效果怎么样,自己试一下就知道了
- python 报错:RecursionError: maximum recursion depth exceeded
RecursionError:maximun recursion depth exceeded 超过了最大递归深度 原因: 在使用@property装饰器时,方法名与实例的属性同名,在赋值进从而产生了 ...
- RPC框架下实现文件上传到linux服务器
一.前端使用element -ui 的upload组件 :data 表示额外传递的参数, :header 表示设置请求头参数,如,token等, action表示后台api接口的地址 二. conto ...
- [Docker] 制作并运行 Nginx 镜像
环境 操作系统(cat /etc/redhat-release):CentOS Linux release 7.6.1810 (Core) Docker:18.09.6 文件 Dockerfile F ...
- 【hexo指南】hexo配置ER图流程图时序图插件
偏技术的文章有时会用到各种图形,一般来说可以做好图然后截图放到文章中就好了,虽然但图片本身也很小,但存一大堆图片占用空间总觉得不是很好. mermaid mermaid官方网站 mermaid支持很多 ...
- 微信小程序云开发指南
一.初识云开发 官方文档 小程序·云开发是微信团队联合腾讯云推出的专业的小程序开发服务. 开发者可以使用云开发快速开发小程序.小游戏.公众号网页等,并且原生打通微信开放能力. 开发者无需搭建服务器,可 ...
- 【刷题-LeetCode】191 Number of 1 Bits
Number of 1 Bits Write a function that takes an unsigned integer and return the number of '1' bits i ...
- JavaCV的摄像头实战之一:基础
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于<JavaCV的摄像头实战>系列 &l ...
- gin中的重定向
package main import ( "github.com/gin-gonic/gin" ) func main() { // HTTP重定向很容易,内部.外部重定向均支持 ...