2011-01-26 25 views

risposta

13

è necessario utilizzare un Action per la JButton:

Action sendAction = new AbstractAction("Send") { 
    public void actionPerformed(ActionEvent e) { 
     // do something 
    } 
}; 

JButton button = new JButton(sendAction); 

Poi è possibile impostare la stessa azione per un JTextField o anche su un MenuItem se si desidera che la stessa azione sia disponibile nel menu:

JTextField textField = new JTextField(); 
textField.setAction(sendAction); 
+5

+1, cool, non sapevo nemmeno del metodo setAction(). Ho sempre usato addActionListener. Ad ogni modo questa è la soluzione migliore. – camickr

7

Qualcosa del genere dovrebbe funzionare:

textField.addActionListener(new ActionListener() 
{ 
    @Override 
    public void actionPerformed(ActionEvent e) 
    { 
     button.requestFocusInWindow(); 
    } 
}); 
+0

ho appena provato e che mette i concentrati sul pulsante, ma non lo attiva. – LOD121

+0

Non lo farà, il metodo requestFocusInWindow() fa quello che dice sullo stagno. Per simulare un clic, il metodo doClick() è ciò che stai cercando. – berry120

+2

button.doClick(); funziona bene. Grazie. – LOD121

3

farei qualcosa come il seguente:

textField.addKeyListener(
    new KeyAdapter() { 
    public void keyPressed(KeyEvent e) { 
     if (e.getKeyCode() == KeyEvent.VK_ENTER) { 
      button.doClick(); 
     } 
    } 
    }); 
} 
+1

Grazie. Funziona bene – LOD121

+1

@ LOD121, Sì, funziona, ma questo non è il modo in cui il campo di testo è stato progettato per essere utilizzato. – camickr

+0

Devo essere d'accordo e ammetto che anch'io non ero a conoscenza del metodo setAction()! Impariamo qualcosa ogni giorno eh? – berry120

4

è possibile raggiungere questo aggiungendo il comportamento default al pulsante, come questo

cmdLogin.setDefaultCapable(true); // by default, this is true 
this.getRootPane().setDefaultButton(cmdLogin); // here `this` is your parent container 
+1

+1, ma attenzione: funzionerà solo finché il campo di testo non _non_ ha un'azione associata. – kleopatra

+0

sì. questo è vero. ma in questo caso, questo dovrebbe funzionare e spero che l'obiettivo dell'autore del post fosse quello di ottenere il comportamento di "default". – sunil

Problemi correlati