java - 尝试在单击时更改按钮名称
问题描述
我有一个按钮,我想在第二次单击它时做一些不同的事情。为此,我让单击的按钮处理程序检查按钮的名称,并在第一次按下它时更改此名称。
按钮名称没有改变,我是否需要重新打包或更新它所属的按钮面板?
@Override
public void actionPerformed(ActionEvent e) {
switch(((JButton) e.getSource()).getName()) {
case "TR":
((JButton) e.getSource()).setName("Done TR");
awaitPoints("TR");
break;
case "Done TR":
CP.ComputeTransfo();
((JButton) e.getSource()).setName("TR Complete");
((JButton) e.getSource()).setEnabled(false);
break;
default:
System.out.println("ERROR:TFM01");
System.exit(0);
break;
}
}
解决方案
关于这个答案
Component.setName(..) 在 JDK 中主要由外观实现类使用来为每个组件设置类似 ID 的字符串,例如 BasicOptionPaneUI 可能会在按钮组件上调用它以将其名称设置为“OptionPane.button”。
所以如果你想改变你需要使用的标签的文本setText()
不是setName()
JButton btn=new JButton("Text Before the change");
btn.setText("This text got changed!")
推荐阅读
- javascript - Firebase 部署节点模块问题
- angular - 您如何确保 Angular 7 应用程序中没有匹配规范文件的文件的代码覆盖率?
- amazon-web-services - AWS Cloudwatch 警报在达到阈值后未触发
- postgresql - 如何阅读 Postgres 事务日志
- android - 如何从主方法的上下文中访问数据类值
- .net - 无法实例化类的代理。找不到无参数构造函数
- sql - 需要将符合条件的数据从一个表更新到另一个表
- c++ - MTLBuffer 损坏的数据
- pentaho - 动态路径创建
- amazon-web-services - AWS Lambda@Edge 没有记录