【问题标题】:Java Swing: Using ActionMapJava Swing:使用 ActionMap
【发布时间】:2011-08-31 07:14:13
【问题描述】:

我之前看到过一篇帖子,它建议优先考虑 Actions 而不是听众。我对 ActionMap 不是很熟悉。每种方法的缺点是什么?我喜欢制作实现监听器的内部类。这是一种不好的做法吗?

谢谢

【问题讨论】:

  • 这是可能的,尽管他们只讨论键绑定。那里说键绑定导致更容易维护代码 - 这意味着一个 Action 对象是用我需要的东西制作的,对吧?但是我不能也将可重用的代码放在监听器中吗?
  • 对于初学者来说最好从 1) 普通的 Listener 开始,如果一切正常,则更改为 2) Action(s) download.oracle.com/javase/tutorial/uiswing/misc/action.html 或 3) 到 ActionMap,4) 用于基本编程您看不到任何差异,代码将按照您期望的两种方式执行,5) 但如果您使用 Action/Map,代码应该更具可读性和可维护性 6) 为高级编程做好准备
  • 很公平。这是一个很好的答案,但我无法评价它,可能是因为它在评论中......
  • 如您所见,很好的问题和 5 次投票,但没有您的代码真的错过了一个问题,一切都只是在学术层面上,并且没有回答者对此提出更好的具体建议论坛 :-),我不认为我的评论可能会好......,有比我更好的,:-) 我仍然像你一样学习那些关于 GUI 的 ZOO

标签: java swing action listener


【解决方案1】:

Key bindings 依赖于actionsAction 的潜在风险是“在存储方面的实施往往比典型的 ActionListener 更昂贵。”在实践中,问题不会出现。这是example

使用KeyListener 在概念上更容易理解,但通常更难维护。最终不可避免地会重新创建某种绑定机器。这个example虽然很有启发性,甚至适合游戏,但它是不必要的复杂。

【讨论】:

  • 这是一个很好的答案,但是您对存储的意思是什么? Actions 比 Listeners 贵多少?我可以看到维护是多么容易。
  • 效果取决于实现,关键取决于实现Action 所需的努力。
  • 实际上,完全没有风险(当然是所有 IMO :-) api doc 中的评论是历史性的 - 它是在 Swing 生活中的某个时候添加的,当时每个人都对性能和足迹,10 多年前。至于 keyListeners:忘记它们的存在。他们同时脾气暴躁,无法处理和维护并且太有限
  • @kleopatra 的观点是正确的;让应用程序看起来因为长时间的动作而变得迟钝并不难,但解决方案是优化动作,而不是放弃键绑定。
  • 那么你会一直对监听器使用 Action 吗?或者在某些情况下听众会更受欢迎?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-17
  • 2011-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-27
相关资源
最近更新 更多