【问题标题】:ActionS in Swing ContainerS (JFrameS etc)Swing ContainerS 中的 ActionS(JFrameS 等)
【发布时间】:2010-11-29 23:08:17
【问题描述】:

似乎虽然可以将 ActionS 添加到 ComponentS,但不能将它们添加到 ContainerS,例如 JFrame、JApplet 或 JDialog。由于我在谷歌上找不到任何有用的东西,我觉得我应该分享我的发现,这样未来的人们就不必浪费太多时间了。如果您认为我遗漏了什么或漏掉了什么,请随时添加信息。

解决方案在于 .getRootPane(),然后您可以像这样添加操作:

jframe.getRootPane().getInputMap(JComponent.WHEN_FOCUSED).(KeyStroke.getKeyStroke("INSERT"), insertAction);

希望这对后代有所帮助。

【问题讨论】:

  • 不是一个真正的问题....更像是一个时髦的大写字母 S
  • 我按照meta.stackexchange.com/questions/17845/… 中概述的程序进行操作,因为就像我说的那样,在 Google 上找不到任何东西。至于大写的 S,Sun Javadoc 决定指出 S 是复数而不是类名的一部分。

标签: java swing containers action


【解决方案1】:

当然,您可以将键绑定添加到 JPanel。它是一个 Swing 组件。

我不确定“WHEN_FOCUSED”InputMap 是否会起作用。通常焦点在一个组件上,而不是根窗格。

查看Key Bindings 以获取默认绑定列表以及我使用键绑定的简单示例。

【讨论】:

  • 感谢您的更正,我不知道 JPanel 是从哪里来的,因为我在使用 JFrame 和 JDialog 时遇到了麻烦 - 归咎于深夜编码。 WHEN_FOCUSED 映射在我的测试中运行良好,尽管我的测试用例过于简单,因此总体而言 ANCESTOR 映射可能会更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-18
  • 1970-01-01
  • 2016-03-26
  • 2020-04-16
  • 2021-07-19
  • 2013-01-26
  • 2023-01-27
相关资源
最近更新 更多