Come posso fare in modo che quando preme entri in un JTextField attivi un JButton specifico? Quello che voglio dire è qualcosa sulla falsariga di un modulo di una pagina web in cui è possibile premere Invio per attivare il pulsante nel modulo. Grazie.Java imposta lo stato attivo su jbutton quando si preme Invio
risposta
è 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);
Qualcosa del genere dovrebbe funzionare:
textField.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
button.requestFocusInWindow();
}
});
ho appena provato e che mette i concentrati sul pulsante, ma non lo attiva. – LOD121
Non lo farà, il metodo requestFocusInWindow() fa quello che dice sullo stagno. Per simulare un clic, il metodo doClick() è ciò che stai cercando. – berry120
button.doClick(); funziona bene. Grazie. – LOD121
farei qualcosa come il seguente:
textField.addKeyListener(
new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
button.doClick();
}
}
});
}
è 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, cool, non sapevo nemmeno del metodo setAction(). Ho sempre usato addActionListener. Ad ogni modo questa è la soluzione migliore. – camickr