如何为JTree / JList / JTable设置助记符

时间:2011-02-26 00:49:48

标签: java swing testing key-bindings

他们没有setMnemonic(),就像Buttons那样。

我正在尝试构建一些自动UI测试。使整个UI键盘驱动对此至关重要。使用助记符(加速器或快捷方式)在小部件之间移动是一种经过验证的方法。

我似乎无法弄清楚如何为上述组件设置助记符。 有一些方法可以强制键盘导航,在元素之间进行选项卡或手动注册全局加速器。但是,如果我必须走得那么远,我至少会对最佳做法提出一些意见。

<编辑>

camickr是对的。我只需要放松并完成阅读有关该主题的文档。然后变得非常简单。这是任何人进行搜索的最终结果。

treeWidget                                     
  .getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
  .put(KeyStroke.getKeyStroke(LIST_MN,InputEvent.ALT_DOWN_MASK), "focus_jtree");

treeWidget   
  .getActionMap()                        
  .put("focus_jtree", new AbstractAction() {
    @Override                    
    public void actionPerformed(ActionEvent event) {
      treeWidget.requestFocusInWindow();
  }});

2 个答案:

答案 0 :(得分:3)

请参阅How to Use Key Bindings中的Swing教程。

  

但我似乎无法弄清楚如何仅使用键盘事件将焦点设置为其中一个组件。

不确定你的意思。您可以选择任何这些组件。

答案 1 :(得分:1)

我目前的解决方案是

JLabel jLabel = new JLabel("List");
  jLabel.setDisplayedMnemonic(LIST_MN);
  jLabel.setLabelFor(treeWidget);
  add(jLabel);
  add(treeWidget);

似乎可以完成这项工作,但我的小部件并不总是有标签。所以我只是添加标签来为他们提供简单的助记符。并且标签通常不包含助记符。