使用哪一个更好:Action vs ActionListener?

8

我个人通常使用ActionListener作为swing事件处理器(例如按钮单击),大多数swing应用程序中也是最常见的监听器。

然而,一些Swing专业人士在stackoverflow上经常建议使用Action而不是ActionListener。那么这样做有什么好处呢?


1
操作可以共享、阻止和设置。 - mKorbel
1个回答

10
一个Action对象适用于需要在多个组件之间共享功能的情况。来自docs

如果您有两个或更多执行相同功能的组件,请考虑使用一个Action对象来实现该功能。

但也说到:

Action对象是一个动作监听器,不仅提供动作事件处理,还提供对触发动作事件的组件(如工具栏按钮、菜单项、普通按钮和文本字段)状态的集中处理。一个action可以处理的状态包括文本、图标、助记符、启用和选定状态。


1
+1 表示“动作”;FileMenu 是一个基本的例子。这样做的好处是以后不必再做了。 :-) - trashgod
2
创建一个单一的动作监听器,然后通过addActionListener()将相同的引用添加到多个Swing组件中,这样做不是一样的吗? - Eng.Fouad
5
Actions拥有其他ActionListeners所没有的额外好处,包括能够保存图标、助记键、描述,并且可以保存任何你想要的键值。 - Hovercraft Full Of Eels
1
@HovercraftFullOfEels 哦,我懂了 +1。我更喜欢最后一部分 :) 并且可以保存任何您想要的键值。为Reimeus加1。 - Eng.Fouad
2
@Eng.Fouad:这也是从库中导出功能的好方法,例如:https://dev59.com/X2zXa4cB1Zd3GeqPY-eH#14202720。 - trashgod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接