假设我有一个像JSlider这样的标准Swing组件,但我想略微调整输入映射.默认输入映射和操作映射是按外观安装的,我想重用ActionMap中已有的一些操作.为此,我需要将ActionMap条目的键放入InputMap条目的值中.
我可以在运行时使用调试器轻松查找ActionMap键(总是一个String),并重用它.它将起作用 - 在我的JDK和L&F版本上得到保证.
所以问题是,在任何地方都记录了默认Swing组件操作的关键,它们是否可以"合法地"随时间变化(即从JDK版本到JDK版本或从L&F到L&F)并且您在实践中看到了这样的变化吗?
谢谢.
好吧,我花了一段时间才找到这个。
简而言之,它们似乎没有(太多)标准化,也没有(太多)被记录下来。
LookAndFeel 类是关键。这是层次结构:
外观和感觉
基本外观和感觉
在 BasicLookAndFeel 类中,您可以找到操作和键绑定的默认映射,这些映射将由所有其他类继承。所以你可以认为这个类是标准的。您可以看到,在创建对象“默认值”时,Java 1.4.2_17 的值约为 498。
可以在实现器上找到其他键绑定和覆盖,例如 WindowsLookAndFeel。
一些标准化名称可以作为静态字段在 DefaultEditorKit 类中找到。这些似乎可以安全地使用和重新映射。它们的用法可以在 WindowsLookAndFeel 和 MotifLookAndFeel 类中看到。假设这些行动将保持不变,我会感到安全。
简而言之,DefaultEditorKit 中定义的 Actions 不太可能改变。然而,L&F 实现之间的键绑定完全不同。使用 DefaultEditorKit.something 从地图中检索操作,它应该可以跨版本工作。DefaultEditorAction 中的示例,您可以将其与 JSlider 一起使用:
/**
* Name of the Action for extending the selection
* by moving the caret logically forward one position.
* @see #getActions
*/
public static final String selectionForwardAction = "selection-forward";
Run Code Online (Sandbox Code Playgroud)