2012-12-04 3 views
0

En ce moment je travaille sur le contenu de JavaHelp. Fondamentalement, première solution, après avoir sélectionné la fonction sélectionnée dans le menu arborescent ou le nœud (JTree), et appuyé sur la touche d'aide (F1), le contenu spécifique JavaHelp apparaîtra en fonction du nœud sélectionné. En ce moment, en essayant d'ajouter le bouton Aide, l'utilisateur doit d'abord sélectionner une fonction dans le menu ou le nœud de l'arbre et cliquer sur le bouton Aide que j'ai créé. il suppose que cela fonctionne exactement comme la première solution, mais pour l'instant, il ne fait pas apparaître le contenu correct. Comment puis-je faire le bouton d'aide pour déclencher l'action de touche F1?Comment puis-je déclencher l'action de la touche d'aide F1 en cliquant sur le bouton J

ce qui signifie que lorsque nous sélectionnons le nœud, il a déjà un focus n peut directement popup si nous appuyons sur la touche F1, le bouton d'aide ne déclencherait probablement que l'action de la touche F1.

J'ai entendu parler de la fonction doClick ou de la liaison des touches, des idées à ce sujet?

Merci

Cordialement, Aznimah

Salut, je cherche à mettre en œuvre la combinaison de touches pour déclencher l'action de la touche F1 lorsque l'utilisateur clique sur le bouton d'aide. Mais je ne sais pas comment définir le code pour déclencher l'action clé F1. Voici un code:

bouton d'action

:

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 

     } 

    } 

Comment définir ActionMap pour déclencher l'action des touches F1? vraiment besoin d'aide sur ce

grâce

Répondre

1

La meilleure façon que vous pouvez faire est de créer un écouteur de touche.

KeyListener

Il y a plusieurs façons de le faire. En voici un:

 

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

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

     } 
    }); 

Quoi qu'il en soit, le code clé pour la F1 est de 112

+0

Salut, merci pour la réponse. Je viens de passer par le lien donné, mais pas entièrement compris. Pour le moment, je sélectionne simplement le menu ou le nœud de l'arbre et je clique directement sur le bouton d'aide. comment puis-je relier le bouton d'aide pour déclencher l'action F1 de la touche d'aide? –

+0

Oui merci beaucoup pour la réponse, En tout cas, j'ai d'autres questions, comment puis-je déclencher la fonction de touches F1, ce qui signifie que les touches FI programaticaly sans besoin de presser sur le clavier –

+0

Vous pouvez utiliser KeyBindings à la place. Docs peuvent être trouvés ici [KeyBindings] (http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html) –

Questions connexes