2012-12-04 2 views
0

지금 JavaHelp 콘텐츠를 작업하고 있습니다.J 버튼을 클릭하여 도움말 키 F1 동작을 트리거하는 방법

기본적으로 첫 번째 해결 방법은 트리 메뉴 또는 노드 (JTree)에서 선택한 함수를 선택한 다음 도움말 키 (F1)를 누르면 선택한 노드를 기반으로 특정 JavaHelp 내용이 팝업됩니다.

바로 지금, 도움말 버튼을 추가하려고하는데, 사용자는 먼저 트리 메뉴 또는 노드에서 기능을 선택하고 도움말 버튼을 클릭해야합니다. 첫 번째 해결책과 정확히 일치한다고 가정하지만 지금은 올바른 내용을 팝업하지 않습니다.

어떻게하면 F1 키 동작을 트리거하도록 도움말 단추를 만들 수 있습니까? 우리가 노드를 선택할 때, F1 키를 누르면 포커스가 이미 팝업으로 나타납니다. 도움말 버튼은 F1 키 동작을 트리거 할뿐입니다.

do 함수 또는 키 바인딩에 대해 들었는데, 이에 대한 아이디어가 있습니까?

감사

감사합니다, 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 

     } 

    } 

가 어떻게 액션의가 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를 사용할 수 있습니다. 문서는 여기에서 찾을 수 있습니다. [KeyBindings] (http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html) –

관련 문제