Ist es möglich zu erkennen, wenn jemand drückt, Enterwährend er ein JTextField in Java eingibt? Ohne eine Schaltfläche erstellen und als Standard festlegen zu müssen.
quelle
Ist es möglich zu erkennen, wenn jemand drückt, Enterwährend er ein JTextField in Java eingibt? Ohne eine Schaltfläche erstellen und als Standard festlegen zu müssen.
A JTextField
wurde entwickelt, um ein ActionListener
genau wie ein JButton
is zu verwenden. Siehe die addActionListener()
Methode von JTextField
.
Beispielsweise:
Action action = new AbstractAction()
{
@Override
public void actionPerformed(ActionEvent e)
{
System.out.println("some action");
}
};
JTextField textField = new JTextField(10);
textField.addActionListener( action );
Jetzt wird das Ereignis ausgelöst, wenn der EnterSchlüssel verwendet wird.
Ein zusätzlicher Vorteil ist, dass Sie den Listener für eine Schaltfläche freigeben können, auch wenn Sie die Schaltfläche nicht als Standardschaltfläche festlegen möchten.
JButton button = new JButton("Do Something");
button.addActionListener( action );
Hinweis Dieses Beispiel verwendet ein Action
, die implementiert , ActionListener
da Action
eine neuere API mit Zusatz - Features ist. Sie können beispielsweise Action
das Ereignis deaktivieren, das das Ereignis sowohl für das Textfeld als auch für die Schaltfläche deaktiviert.
Alles was Sie tun müssen, ist AddActionListener zum JTextField wie oben! Nachdem Sie gedrückt haben, wird Enterdie Aktion ausgeführt, was Sie bei der Anweisung wollen!
quelle
Fügen Sie ein Ereignis für hinzu
KeyPressed
.quelle
KeyListeners
haben viele Mängel, die in größerem Maße behoben werdenKeyBindings
, z. B. durch Fokus, Kopieren / Einfügen und viele, viele mehr. Es ist zu vermeiden für triviale Aufgaben, wie sie im OP gefordert werden.Möchtest du so etwas machen?
quelle
Fügen Sie zuerst einen Aktionsbefehl für JButton oder JTextField hinzu, indem Sie:
Fügen Sie dann ActionListener zu JTextField und JButton hinzu.
Danach schreiben Sie auf Ihre ActionListener-Implementierung
quelle
Die anderen Antworten (einschließlich der akzeptierten) sind gut, aber wenn Sie bereits Java8 verwenden, können Sie Folgendes tun (auf kürzere, neuere Weise):
Wie die akzeptierte Antwort sagte, können Sie einfach mit einem reagieren
ActionListener
, der die Eingabetaste fängt.Mein Ansatz nutzt jedoch die in Java 8 eingeführten Funktionskonzepte.
Wenn Sie dieselbe Aktion beispielsweise für eine Schaltfläche und das JTextField verwenden möchten, können Sie Folgendes tun:
Wenn weitere Erklärungen erforderlich sind, lassen Sie es mich bitte wissen!
quelle
Wenn Sie eine Standardschaltflächenaktion in einer JTextField-Eingabe festlegen möchten, müssen Sie Folgendes tun:
Dies ist [0], da eine Schaltfläche viele Aktionen enthalten kann, normalerweise jedoch nur eine (ActionPerformed).
quelle
Rufen Sie für jedes Textfeld in Ihrem Frame die Methode addKeyListener auf. Implementieren und überschreiben Sie dann die keyPressed-Methode, wie andere angegeben haben. Jetzt können Sie in einem beliebigen Feld Ihres Frames die Eingabetaste drücken, um Ihre Aktion zu aktivieren.
quelle
Um Logik für 'Enter Press' zu schreiben
JTextField
, ist es besser, die Logik innerhalb deskeyReleased()
Blocks zu halten , anstattkeyTyped()
&keyPressed()
.quelle
KeyListeners
Sind ausSwing
der Sicht viel zu niedrig . Verwenden Sie die API, die sein soll verwendet mitSwing
:-)Verwenden Sie einfach diesen Code:
quelle