2012-12-04 33 views
0

現在我正在研究JavaHelp內容。如何通過單擊Jbutton來觸發幫助鍵F1操作

基本上,第一種解決方案是,從樹形菜單或節點(JTree)中選擇所選功能並按下幫助鍵(F1)後,它將基於所選節點彈出特定JavaHelp內容。

現在,即時嘗試添加幫助按鈕,用戶首先需要從樹形菜單或節點中選擇功能,然後單擊我創建的幫助按鈕。它假定工作與第一種解決方案完全相同,但現在它不會彈出正確的內容。

如何使幫助按鈕觸發F1鍵操作?這意味着當我們選擇節點時,它已經有一個焦點,如果我們按下F1鍵,直接彈出,幫助按鈕可能只是觸發F1鍵操作。

我聽說過關於doClick函數或鍵盤綁定的問題嗎?

感謝

問候, Aznimah

嗨,我嘗試實施鍵綁定觸發F1鍵操作時幫助按鈕用戶點擊。但我無言如何設置代碼來觸發F1鍵操作。下面是一些代碼:

動作按鈕:

final String helpIconLocation = new String("/icons/help_new.png"); 
     iconResource = CustomizedToolbar.class.getResource(helpIconLocation); 
     icon = new ImageIcon(iconResource); 
     actionButton = new JButton(icon); 
     actionButton.setFocusable(false); 
     actionButton.addActionListener(new JavaHelpHandler()); 

的ActionListener:

private class JavaHelpHandler implements ActionListener { 

     @Override 
     public void actionPerformed(ActionEvent arg0) { 

      Action javaHelpF1KeyAction = new AbstractAction(); 
      KeyStroke helpKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0); 
      MainApp.getMainAppPanel().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
        helpKeyStroke, "F1"); 
      MainApp.getMainAppPanel().getActionMap().put("F1", javaHelpF1KeyAction); 

     } 

    } 


    private class AbstractAction implements ActionListener, Action { 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      // TO display popup javaHelp content 
      HelpSystemUtil.getInstance().enableHelpFromFocus(actionButton); 
     } 

     @Override 
     public void addPropertyChangeListener(PropertyChangeListener listener) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public Object getValue(String key) { 
      // TODO Auto-generated method stub 
      return null; 
     } 

     @Override 
     public boolean isEnabled() { 
      // TODO Auto-generated method stub 
      return false; 
     } 

     @Override 
     public void putValue(String key, Object value) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void removePropertyChangeListener(PropertyChangeListener listener) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void setEnabled(boolean b) { 
      // TODO Auto-generated method stub 

     } 

    } 

如何設置ActionMap將觸發F1鍵作用?真的需要這個

感謝

回答

1

你能做的最好的方法是創建一個按鍵偵聽器上的幫助。

KeyListener

有幾種方法可以做到這一點。這裏有一個:

 

    yourComponent.addKeyListener(new KeyAdapter() { 
     @Override 
     public void keyPressed(KeyEvent e) { 

       if (e == YOUR_KEY_CODE) { 
        // Do something 
       } 

     } 
    }); 

無論如何,對於F1鍵碼爲112個

+0

您好感謝您的答覆。 我只是通過給出的鏈接,但不完全理解。 現在,我只需選擇樹形菜單或節點,然後直接單擊幫助按鈕。我如何將幫助按鈕與觸發幫助鍵F1操作相關聯? –

+0

是的,非常感謝你的回覆, 無論如何,我還有一個問題,我如何觸發F1鍵功能,這意味着它不需要鍵盤上的按鍵就可以實現FI鍵的編程 –

+0

您可以改用KeyBindings。 Docs可以在這裏找到[KeyBindings](http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html) –

相關問題