java - 我必须为我创建的每个组件创建一个单独的 ActionListener 吗?
问题描述
我目前正在学习 java.swing 和事件处理,我刚刚从一个按钮开始,它改变了标签的文本,仅此而已。我这样做的方法是创建一个 ActionListener 并将其添加到按钮组件,然后使用 ActionPerformed 方法更改标签的文本。我现在想知道更大规模的计划。您是否必须为用户可以与之交互的每个组件创建一个新的 ActionListener ?必须有更好的方法来做到这一点,它是什么?
解决方案
或者您为每个侦听器创建一次,它可以非常简洁地使用 lambdas 表达式。
或者您保留按钮的引用并使用 if/else 语句与 action.getSource 进行比较,例如:
Button x, y; //initialized somewhere
ActionListener l = new ActionListener() {
public void onActionPerformed(ActionEvent evt) {
if(evt.getSource() == x) {
//Do action for x
} else if (evt.getSource() == y) {
//Do action for y
}
}
x.addActionListener(l);
y.addActionListener(l);
推荐阅读
- javascript - 完成待办事项列表中的所有任务
- oracle - AWS Oracle RDS DATA_PUMP_DIR 清理
- nvidia - 正确创建 Optix 7.1 TLAS 实例加速结构
- asp.net-mvc - 如何使用 ASP.NET MVC DropDownListFor() 发布选择列表值?
- c# - 无法在 .NetFramework 的类库中创建剃刀视图
- mongodb - 在没有allowDiskUse的情况下删除mongodb数据库中的重复项
- python - Google drive api python - 如何获取下载文档的可共享链接
- linux - file_put_contents() 无法打开流:CentOS 上的权限被拒绝
- python - 如何使用 matplotlib.animation (python)逐点为脱节的线设置动画?
- php - 致命错误:未捕获的 ArgumentCountError:mysqli_connect_errno() 需要 0 个参数,1 个给定