在Swing中为组件的许多键映射定义动作的最佳方法是什么?

我在Swing中构建了自己的文本视图,并希望为许多键定义动作。我目前的操作方式(到目前为止,大约有10个键)是:

ActionMap actionMap = DBDocument.this.getActionMap();
int condition = JComponent.WHEN_FOCUSED;
InputMap inputMap = DBDocument.this.getInputMap(condition);
String tab = "tab";
actionMap.put(tab, new AbstractAction() {
            private static final long   serialVersionUID    = 1L;
            @Override
             public void actionPerformed(ActionEvent ap) {
                if(mDocumentModel != null){
                    //Do some stuff here
                }
             }
          });


显然,这是定义键绑定的非常冗长的方法。理想情况下,我将能够定义一个处理很多可能性的动作(例如[A-Z]或[0-9])。我已经在OpenJDK中搜索了定义,但没有走得太远。

最佳答案

通过应用DRY原理避免重复的荣誉。在here中引用了DRY动作的几个示例,但是公共线程是共享相同模型(例如Document)或由一组相关按钮共享的动作。

07-26 04:55