2010-09-03 7 views
2

Comment faire pour entrer la mise au point clé pour un JButton en java swing?Entrez la mise au point clé pour un JButton en java swing?

je l'ai fait comme ça

btn_Login.registerKeyboardAction(new ActionListener() { 

    public void actionPerformed(ActionEvent e) { 
     System.out.println("enter key pressed"); 

    } 
}, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0,false), txt_Username.WHEN_FOCUSED); 

mais ne fonctionne pas

+0

renvoient ce lien http://www.devx.com/DevX/Tip/31605 – Hukam

Répondre

6

Je suppose que vous voulez un bouton spécifique à « pressé » si vous appuyez sur Entrée sur une juste certaine fenêtre. Pour ce faire, vous devez définir le DefaultButton sur votre RootPane du JFrame actuel.

est un exemple:

JButton btn = new JButton(); 
JFrame frame = new JFrame(); 

frame.getContentPane().add(btn); 
frame.getRootPane().setDefaultButton(btn); 

Cela devrait vous donner le résultat escompté.

3

Merci à tous! Voici quelques notes que j'ai trouvé pour résoudre le problème d'entrée pour le Nimbus Look et qui est tombé.

  1. La touche Entrée fonctionne avec Linux mais pas avec Windows (Nimbus).
  2. Pour les fenêtres le "doClick" réel du bouton est fait avec de l'espace (Key Char 32).
  3. Il est possible de définir le "enter" pour faire un clic, mais il doit être fait après le réglage de votre Nimbus Look and Feel.
  4. Voici le code utilisé dans mon application.

    UIManager.setLookAndFeel(new NimbusLookAndFeel()); 
        //- hack pour que les bouttons qui ont le focus fassent un doClick 
        //- lorsque "enter" est taper. Auparavant, c'etait l'espace qui 
        //- activait le doClick. 
        InputMap im = (InputMap)UIManager.get("Button.focusInputMap"); 
        im.put(KeyStroke.getKeyStroke("ENTER"), "pressed"); 
        im.put(KeyStroke.getKeyStroke("released ENTER"), "released"); 
    

(Désolé pour mes commentaires français!).