簡體   English   中英

如何為JTree / JList / JTable設置助記符

[英]How to set a Mnemonic for a JTree/JList/JTable

他們沒有像Buttons那樣的setMnemonic()。

我正在嘗試構建一些自動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();
  }});

請參閱如何使用鍵綁定中的Swing教程。

但我似乎無法弄清楚如何僅使用鍵盤事件將焦點設置為其中一個組件。

不確定你是什么意思。 您可以選擇任何這些組件。

我目前的解決方案是

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

似乎可以完成這項工作,但我的小部件並不總是有標簽。 所以我只是添加標簽來為他們提供簡單的助記符。 並且標簽通常不包含助記符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM