1

他们没有 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();
  }});
4

2 回答 2

3

请参阅如何使用键绑定中的 Swing 教程。

但我似乎无法弄清楚如何仅使用键盘事件将焦点设置到这些组件之一。

不知道你的意思是什么。您可以使用选项卡转到这些组件中的任何一个。

于 2011-02-26T00:53:57.713 回答
1

我目前的解决方案是

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

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

于 2011-02-26T01:10:27.980 回答