2009-08-03 11 views
1

In HTML-Formularen, wenn Sie in einem Textfeld die Eingabetaste drücken, wird das Formular im Allgemeinen übergeben.Java-Standardformular Aktion oder Schaltfläche

Ich implementiere ein Suchfenster in Java Swing, und ich möchte die gleiche Funktionalität wie ich denke, dass Benutzer dies erwarten.

Ich weiß, dass es möglich ist, setAction auf einem JTextField zu verwenden, um dies zu erreichen, aber ich frage mich, ob es einen leichteren/besseren Weg als die Aktion für jedes Feld festgelegt wurde. Ich habe versucht, mich umzusehen, aber es scheint keine Standardlösung für dieses Problem zu geben, die ich finden kann!

Bearbeiten: Es gibt getRootPane(). SetDefaultButton (...), aber das scheint nur die Standardschaltfläche für einen Rahmen festzulegen. Das würde für mich nicht funktionieren, da ich ein Registerkartenfenster verwende, auf dem jedes Feld ein Formular hat!

+0

afa gezeigt ik, die Tatsache, dass enter ein HTML-Formular einreicht, ist mehr ein Feature des Browsers als HTML. Ich fürchte, es gibt keine andere Lösung in Java, als einen Keylistener zum jtextfield hinzuzufügen. – clamp

+0

Ich denke, ein ActionListener wäre besser als ein KeyListener - der Action-Listener wird bei enter in einem Textfeld ausgelöst. –

Antwort

1

IIRC, wird eine Action zum JTextField Hinzufügen bietet die Funktionalität, die Sie wollen

schnelles Google später ...

Yep - und dies scheint der empfohlene Weg von Sun zu sein, wie in der text field trail...

3

Möglicherweise müssen Sie nach der Tabulator-Taste suchen und die Standardschaltfläche für die aktuelle Registerkarte mithilfe von getRootPane().setDefaultButton(...) zurücksetzen.

+0

Und Sie würden einen ChangeListener verwenden, um nach dem Tabschalter zu horchen. – camickr

1

Wir haben das gleiche Problem in einer unserer Anwendungen.

Sie können einen Key Listener den Herausgeber JTextField hinzufügen:

txtField.getEditor().getEditorComponent().addKeyListener(new java.awt.event.KeyAdapter() 
{ 
    @Override 
    public void keyTyped(final KeyEvent e) 
    { 
    super.keyTyped(e); 

    // Check if the user pressed Enter 
    if (e.getKeyChar() == '\n') 
    { 
     // Action here/button press here 
    } 
    } 
}); 
+1

der Kerl bleibt. – akf

+1

-1 - Sie würden keinen KeyListener verwenden, um auf einem JTextField auf die Eingabetaste zu warten. Sie verwenden entweder einen ActionListener oder die setAction-Methode. – camickr

Verwandte Themen