当前位置: 首页 > 知识库问答 >
问题:

是否可以为100个按钮添加相同的ActionListener?

史磊
2023-03-14

我已经创建了一个按钮数组(JButton[]jb=new JButton[100]),我想为jb数组中的所有按钮添加相同的操作侦听器,而不是逐个添加它们。

想象一下,每次我点击屏幕上显示的一个按钮,它就会在jb数组中打印出该按钮的索引。

共有1个答案

诸葛彦
2023-03-14

简单的答案是肯定的,你可以将同一个监听器添加到许多不同的按钮中,通过参数,监听器将能够找出哪个按钮实例点击了它。

挑战是您无法知道数组中的哪个索引与按钮匹配,因此您需要:

  1. 根据按钮中的内容找出它是哪个按钮,例如它的getLabel
  2. 每次单击都扫描数组以找出按钮实例的索引,这很慢(O(n)),但对于一百个按钮可能没那么重要
  3. 将从按钮实例到数组索引的映射存储在不同的更快的数据结构中,例如HashMap(O(1)),如果按钮没有很好地定义为可散列,这可能会变得很丑陋
  4. 对所有按钮使用相同的ActionListener类,但在侦听器的每个实例上存储一个字段,告诉它映射到什么索引
 类似资料:
  • 我正在试用新的dataview组件,我正在使用这个Sencha示例: http://www.sencha.com/blog/dive-into-dataview-with-sencha-touch-2-beta-2/ 在基顿列表项中,我删除了图像,现在我想添加三个按钮,上面写着:“电子邮件”、“脸书”和“推特”,而不是商店中的值。当用户点击每个按钮时,我想显示每个按钮各自的存储值。如何才能做到这一

  • 我正在开发一个客户端音乐播放器,并正在寻找一种方法来保存与mp3数据完整的播放列表。 localStorage localStorage的5mb限制排除了该选项。我想知道还有什么其他选项。 DataURIs我读过DataURIs,例如,在使用data:URI时,有没有办法指定建议的文件名?和跨浏览器另存为。txt,但不建议默认文件名,尤其是缺乏IE支持,这些都是破坏交易的因素。 IndexedDB

  • 问题内容: 这有点难以描述,但我会尽力而为: 我正在开发一个使用自定义相机活动的android应用。在此摄影机活动中,我使用编程方式创建一个表面视图,并将其设置为xml布局文件中定义的框架布局(全屏显示)。 我现在的问题是,如何在框架布局中添加其他元素?仅以编程方式?我问,因为到目前为止,我只能以编程方式添加其他元素。我在xml布局中添加的元素没有出现在屏幕上。它们是否可能恰好位于我添加到框架布局

  • 问题内容: 目标:实施标准的“设置” GUI窗口。类别位于 ListView左侧,而相应选项位于Pane右侧。 (请忽略具有重复类别的明显错误;仍在处理) 在此处输入图片说明 我有一个用于整体“设置”窗口的主窗口,其中包含 ListView带有所有类别的设置。窗口的右侧 具有AnchorPane, 当从列表中选择一个类别时,用于为每个类别加载单独的FXML文件。 当用户选择类别时,我需要他们能够编

  • 我有一个用于总体设置窗口的主窗口,其中包含一个和所有设置类别。窗口的右侧有一个,用于在从列表中选择每个类别时为每个类别加载单独的FXML文件。 当一个用户选择一个类别,我需要他们能够编辑右边的设置,切换到另一个类别,并作出更多的改变。然而,如果他们回到第一类,那里所做的改变会持续下去。 我的明显问题是,每次用户更改类别时,都会重新加载FXML文件和控制器,将其中的所有控件重置为它们的默认值。 研究