Swing Auf Enter - Eingabe reagieren

Status
Nicht offen für weitere Antworten.

Stinner

Mitglied
Hallo,
evtl hätte ich den Beitrag auch im Anfänger Forum posten können...

Ich habe eine Oberfläche mit buttons an denen ActionListener hängen.
Unter anderem ein Suchfeld in das man was eintragen kann, dann den Suchbutton drückt und es startet eine Suche.
Jetzt will ich auch, dass wenn man im Suchfeld ( TextFeld) ist, einfach ENTER drücken kann.
Habe mich eben mal kurz eingelesen und gesehen, dass man das mit KexBindings machen sollte. Das ist mir aber gerade zu umständlich, da ich dann eine dann eine Action schreiben müsste und den Listener nicht mehr verweden kann ( dort steht meine Suchfunktion).

Wie könnte ich das schnell mit einem KeyListener hinbekommen, sodass ich den ActionListener verwenden kann - also beim drücken von ENTER wird der Listener aufgerufen?
Danke im vorraus, Stinner
 

Marco13

Top Contributor
AFAIR schmeißt ein JTextField einen ActionEvent, wenn man ENTER drückt - sofern das JTextField den Focus hat... ???:L
 

Stinner

Mitglied
mhhh, okay.
Das verwolge ich mal. dann kann ich den gleichen Listener verwenden, muss nur rausfinden welches Event. Oder gibt es nur diesen ActionEvent?
 

Marco13

Top Contributor
Was heißt "nur diesen"? Es ist in beiden Fällen "irgendein" ActionEvent. Wenn der Listener NUR die Aufgabe erfüllt, zu suchen (und den ActionEvent nicht direkt benutzt) ist das egal.

Ganz subjektiv: Ich finde es sinnvoll, den Listener nichts machen zu lassen, außer einer Methode aufzurufen
Code:
class Bla
{
    public void init()
    {
        ActionListener suchenActionListener = new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                suche();
            }
        };

        someButton.addActionListener(suchenActionListener);
        someOtherButton.addActionListener(suchenActionListener);
        someTextField.addActionListener(suchenActionListener);

    }

    private void suche()
    {
        // ... macht die eigentliche Arbeit....
    }

}
 

Stinner

Mitglied
Super klappt.
ja, mache ich normalerweise auch so. aber schreibe gerade alles schnell runter, weil ich bald Abgabe habe.
Gruß
 

Enigma228

Bekanntes Mitglied
Hab ich mal aus meinem Code rausgestückelt
Java:
// KeylistenerObjekt für Eingabefelder erstellen
Ptf_Keylistener ptf_kl = new Ptf_Keylistener();
// Eingaben-Componenten
ptf_name = new PrefilledTextfield("Name"); // ist bloss ein abgeleitetes Jtextfield
ptf_name.addKeyListener(ptf_kl);

// Innere Klasse für die Textfelder damit die Suche nach einem Enter Klick gestartet wird
private class Ptf_Keylistener implements KeyListener{

	@Override
	public void keyPressed(KeyEvent e) {
		if(e.getKeyCode()==10){  // entspricht "Enter"
			b_search.doClick(); // hier wird ein ButtonKlick ausgeführt oder stattdessen dein Code
		}
	}

	@Override
	public void keyReleased(KeyEvent e) {
		// TODO Auto-generated method stub
	
	}
	@Override
	public void keyTyped(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}
}
 

Marco13

Top Contributor
Java:
		b_search.doClick(); // hier wird ein ButtonKlick ausgeführt oder stattdessen
Auf dass nieeee jemand den Button entfernen wollen möge... ;)
 

Enigma228

Bekanntes Mitglied
@marco es sind Codeschnipsel aus meinem "Telefonbuch"-Programm und eine Suchroutine ohne Suchbutton ist einfach nicht benutzerfreundlich. grins
und wieso sollte ich den Code doppelt schreiben.. und wofür sonst kann mann die Funktion DoKlick() von Java so schön nutzen..

@HannsW Danke für den Hinweis !! habs in mein Programm implementiert!!
 

Marco13

Top Contributor
@marco es sind Codeschnipsel aus meinem "Telefonbuch"-Programm und eine Suchroutine ohne Suchbutton ist einfach nicht benutzerfreundlich. grins
und wieso sollte ich den Code doppelt schreiben.. und wofür sonst kann mann die Funktion DoKlick() von Java so schön nutzen..

Naja, OB das in diesem Fall angebracht ist, musst letztendlich du entscheiden. Nur... wenn dort die Taste gedrückt wird, dann soll "das gleiche gemacht werden, wie wenn der Button geklickt wurde". Es soll aber (eigentlich, im allgemeinen, vermutlich) NICHT der Button geklickt werden. Stell dir vor, jemand hängt einen (weiteren) ActionListener an den Button, der sagt: "Hallo, gerade wurde der Button geklickt" - und das erscheint dann auch bei einem Tastendruck. Wie gesagt: Das ist ein Detail, und vielleicht ist es so OK, aber es sieht aus, als würde da eine Funktion mit Hilfe von doClick quasi "hintenrum" aufgerufen ... was würde dagegen sprechen, dort direkt das hinzuschreiben, was gemacht werden soll (d.h. der Aufruf EINER privaten Methode)?
 

Ebenius

Top Contributor
Grundsätzlich ist der ActionEvent (high level) dem KeyEvent (low level) vorzuziehen. Zum Beispiel für Behinderte mit Eingabehilfen macht das einen erheblichen Unterschied.

Ebenius
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I JTextfield senden über Enter AWT, Swing, JavaFX & SWT 1
S ActionEvent Press Enter per Code auslösen AWT, Swing, JavaFX & SWT 22
L JButton durch Mausklick auslösen und Enter-Taste AWT, Swing, JavaFX & SWT 2
J Tableview - kann man mit Enter die Zellen wechseln AWT, Swing, JavaFX & SWT 1
S JavaFX Tab durch Enter ersetzten AWT, Swing, JavaFX & SWT 3
X Javafx button per enter auslösen AWT, Swing, JavaFX & SWT 5
C JTextfield ohne Enter feuern AWT, Swing, JavaFX & SWT 8
C JOptionPane.showConfirmDialog() -> Focus auf NEIN -> Enter gibt YES_OPTION zurück AWT, Swing, JavaFX & SWT 6
T JOptionPane Enter = Okay AWT, Swing, JavaFX & SWT 3
R JButton durch Enter auslösen AWT, Swing, JavaFX & SWT 7
T JButton mit Enter bestätigen AWT, Swing, JavaFX & SWT 7
S Textarea und Enter AWT, Swing, JavaFX & SWT 5
J KeyListener um auf CTRL-Enter zu reagieren AWT, Swing, JavaFX & SWT 2
B JSpinner Enter AWT, Swing, JavaFX & SWT 7
D SWT JFace TableViewer nächster CellEditor nach Enter aktivieren AWT, Swing, JavaFX & SWT 5
E Jtable Werte ohne Enter übernehmen AWT, Swing, JavaFX & SWT 9
O JTable Zelle mit "ENTER" in Editmode setzen AWT, Swing, JavaFX & SWT 4
A JOptionPane soll auf Enter reagieren AWT, Swing, JavaFX & SWT 4
G Button auf Enter reagieren AWT, Swing, JavaFX & SWT 5
GilbertGrape bei "Enter" Funktion ausführen, egal wo der Fokus AWT, Swing, JavaFX & SWT 2
D Wie Taste "ENTER" bei PlainDocument abfangen? AWT, Swing, JavaFX & SWT 2
S Enter in JLabel - oder: JTabbedPane mit mehreren JLabel AWT, Swing, JavaFX & SWT 3
W JTabel darf nicht bei Enter AWT, Swing, JavaFX & SWT 2
D JButton mit Enter drücken AWT, Swing, JavaFX & SWT 5
D JButton mit Fokus soll auf ENTER reagieren AWT, Swing, JavaFX & SWT 3
ARadauer dialog, bei enter auf ok AWT, Swing, JavaFX & SWT 3
C ENTER-Frage AWT, Swing, JavaFX & SWT 28
S "Enter" in JTextField abfangen AWT, Swing, JavaFX & SWT 7
N jTextArea, Enter AWT, Swing, JavaFX & SWT 5
S TAB Taste ändern in Enter und deaktivieren im jTextField AWT, Swing, JavaFX & SWT 5
R JTable editierbar, Enter Event,... AWT, Swing, JavaFX & SWT 2
B JOptionDialog mit Enter Beenden? AWT, Swing, JavaFX & SWT 5
F JOptionPane soll nicht auf ENTER reagieren AWT, Swing, JavaFX & SWT 8
R Steuerzeichen eines Strings (z.B. ENTER) zurückwandeln AWT, Swing, JavaFX & SWT 3
bernd Text nach Betätigung der Enter-Taste übertragen AWT, Swing, JavaFX & SWT 8
K [JComboBox] ENTER löst zwei events aus? AWT, Swing, JavaFX & SWT 2
B button mit ENTER betätigen AWT, Swing, JavaFX & SWT 14
G JButton mit ENTER Taste klicken AWT, Swing, JavaFX & SWT 7
A JOptionPane OK ohne Eingabe abfangen AWT, Swing, JavaFX & SWT 10
B JavaFX TextField Eingabe in neues Fenster übernehmen AWT, Swing, JavaFX & SWT 4
F AWT awt KeyEvent - Zeichen direkt nach Eingabe löschen AWT, Swing, JavaFX & SWT 2
G Eingabe in JTextField in Array speichern und in JList ausgeben AWT, Swing, JavaFX & SWT 7
G JTextField Eingabe in DB speichern AWT, Swing, JavaFX & SWT 68
F JavaFX Tabelle mit gespeicherten Eingabe Werten AWT, Swing, JavaFX & SWT 8
J JTable: Eingabe in Tabellenzelle korrigieren AWT, Swing, JavaFX & SWT 4
L PasswordField Eingabe verstecken AWT, Swing, JavaFX & SWT 2
R jTextField Eingabe überprüfen AWT, Swing, JavaFX & SWT 2
L TextField Eingabe in andere GUI übernehmen AWT, Swing, JavaFX & SWT 1
P Variable einer Eingabe in anderes Textfeld schreiben AWT, Swing, JavaFX & SWT 7
E Eingabe von Zahlen in TextArea AWT, Swing, JavaFX & SWT 2
V Swing Eingabe aus Textfeld abholen AWT, Swing, JavaFX & SWT 6
A Prüfung einer Eingabe auf Gleitkommazahl AWT, Swing, JavaFX & SWT 5
U Java FX Warten auf Textfield eingabe AWT, Swing, JavaFX & SWT 17
G JavaFX - Während AudioRecording keine Text eingabe TextField möglich AWT, Swing, JavaFX & SWT 6
P JTable - bei Eingabe Selektion AWT, Swing, JavaFX & SWT 0
U Eingabe von TextField in variable speichern AWT, Swing, JavaFX & SWT 2
D JavaFX Eingabe im GUI AWT, Swing, JavaFX & SWT 5
I JavaFX TextField auf Eingabe prüfen AWT, Swing, JavaFX & SWT 3
F JavaFX JavaFX HTMLEditor-Eingabe in Textarea als HTML anzeigen AWT, Swing, JavaFX & SWT 2
G Swing ComboBox: Auswahl eines Items der Liste durch Eingabe eines Buchstabens AWT, Swing, JavaFX & SWT 3
F Event Handling JTextArea auf bestimmte Eingabe reagieren (Return-Taste) AWT, Swing, JavaFX & SWT 2
J Text bei Eingabe löschen AWT, Swing, JavaFX & SWT 5
D JavaFX Textfeld Eingabe validieren AWT, Swing, JavaFX & SWT 5
A JTable Cell Eingabe AWT, Swing, JavaFX & SWT 6
X Eingabe in einem Ausgabefeld anzeigen lassen AWT, Swing, JavaFX & SWT 11
F Swing TextField Eingabe in Variable umwandeln um zum Beispiel zu rechnen. AWT, Swing, JavaFX & SWT 3
G JavaFX TextField Eingabe formatieren/einschränken AWT, Swing, JavaFX & SWT 2
S Swing JFormattedTextField - bei nicht korrekter Eingabe Inhalt überschreiben AWT, Swing, JavaFX & SWT 5
J Swing JButton durch Eingabe von Zahlen in JTextFields aktivieren AWT, Swing, JavaFX & SWT 3
C Swing JTextfield hängt sich bei Eingabe auf AWT, Swing, JavaFX & SWT 6
A Auf eingabe warten AWT, Swing, JavaFX & SWT 5
R JTextField Eingabe bestimmen AWT, Swing, JavaFX & SWT 5
S JTable - Auf spezielle Eingabe nicht reagieren. AWT, Swing, JavaFX & SWT 5
N Filternde Combobox in JTable verliert Fokus nach erster Eingabe AWT, Swing, JavaFX & SWT 2
M Swing Eingabe auf JTextField automatisch ausgeben auf JLabel AWT, Swing, JavaFX & SWT 2
maddin86 Eingabe in Textfeld 1 synchron in Textfeld 2 ausgeben AWT, Swing, JavaFX & SWT 9
M Swing JTable cell leeren bei Eingabe AWT, Swing, JavaFX & SWT 6
N Eingabe JTextfield überprüfen AWT, Swing, JavaFX & SWT 3
earlgrey_tea KeyEvent reagiert nicht auf Eingabe ("Pausentaste") AWT, Swing, JavaFX & SWT 11
T Tooltip bei falscher Eingabe anzeigen AWT, Swing, JavaFX & SWT 2
S SWT Wie bei Widget Text auf int prüfen bei Eingabe AWT, Swing, JavaFX & SWT 5
J Eingabe im JTextField übermitteln AWT, Swing, JavaFX & SWT 6
P Swing Einfache Eingabe in JTextfield wird nicht ausgegeben AWT, Swing, JavaFX & SWT 3
B Pop-Up eingabe für Zahlen AWT, Swing, JavaFX & SWT 5
B Eingabe von JTextField verwenden AWT, Swing, JavaFX & SWT 10
X Eingabe in Textfeld soll Button aktivieren... AWT, Swing, JavaFX & SWT 12
S Eingabe Überprüfung AWT, Swing, JavaFX & SWT 4
S JTable: Eingabe nur für bestimmte Var.Typen zulassen AWT, Swing, JavaFX & SWT 13
P jframe eingabe durch button AWT, Swing, JavaFX & SWT 2
U Swing Eingabe von JTextField in einen String übergeben. AWT, Swing, JavaFX & SWT 3
eskimo328 JTable nächste Zelle nach Eingabe einer Ziffer AWT, Swing, JavaFX & SWT 5
A Eingabe in JFrame AWT, Swing, JavaFX & SWT 4
aze JTextField Eingabe verbergen AWT, Swing, JavaFX & SWT 14
A Die Eingabe in einem JTextField beschränken AWT, Swing, JavaFX & SWT 5
R JTextField Eingabe speichern AWT, Swing, JavaFX & SWT 4
G JTable - bei falscher Eingabe wird alter Wert genommen. AWT, Swing, JavaFX & SWT 2
N JFormattedTextField erst Verlassen, wenn Eingabe korrekt AWT, Swing, JavaFX & SWT 6
M Prüfen, ob in einem Textfeld/Tabelle eine Eingabe erfolgt is AWT, Swing, JavaFX & SWT 11
N Eingabe eines Textfields weiterverwenden AWT, Swing, JavaFX & SWT 6
A Bei Eingabe eines Datums ein Kalender aufpoppen lassen AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben