Enter Taste abfangen

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

habe eine Methode geschrieben um meine Componenten zu initalisieren:
Code:
private void initComponent(JFrame f,Component c)
	{
		c.addKeyListener( new KeyListener() 
		{ 
			public void keyTyped( KeyEvent e ) { 
				if ( e.getKeyChar() == KeyEvent.CHAR_UNDEFINED ) 
				{ 
					if ( e.getKeyCode() == KeyEvent.VK_ENTER ) 
					{
						System.out.println("Text");
					}
				}
			} 

			public void keyPressed( KeyEvent e ) {} 
			public void keyReleased( KeyEvent e ) {}


		});

Ich will nur eine Nachricht bekommen wenn jemand "Enter drückt".
Warum funktioniert es nicht?
 
M

MiDniGG

Gast
lass das

if ( e.getKeyChar() == KeyEvent.CHAR_UNDEFINED )

ma weg
 

manuche

Bekanntes Mitglied
und wenn es dann nicht geht ein c.requestfocus() ans ende deiner methode bzw nach dem methoden aufruf...
 
M

MiDniGG

Gast
Ja Klar. Die Komponente die den KeyListener verwendet sollte schon den Fokus haben...
Falls es nicht so geht wie du willst. Einfach mal jeder einzelnen Komponente den KeyListener zuweisen. ;-)
 
M

Michael...

Gast
laut Doku liefert getKeyCode in diesem Fall immer VK_UNDEFINED
ich würde es also mal mit e.getKeyChar() == KeyEvent.VK_ENTER versuchen
getKeyCode
public int getKeyCode()Returns the integer keyCode associated with the key in this event.
Returns:
the integer code for an actual key on the keyboard. (For KEY_TYPED events, the keyCode is VK_UNDEFINED.)
 

dirty-mg

Bekanntes Mitglied
Folgender Vorschlag dürfte auch funktionieren:

Code:
public class MyFrame extends JFrame implements AWTEventListener {

    public MyFrame() {
        // init GUI ...

        Toolkit tk = Toolkit.getDefaultToolkit();
        tk.addAWTEventListener(this, AWTEvent.KEY_EVENT_MASK | AWTEvent.WINDOW_EVENT_MASK);
    }

    public void eventDispatched(AWTEvent event) {
        if (event instanceof KeyEvent) {
            KeyEvent ke = (KeyEvent) event;
            // wird ENTER gedrückt, schließt sich das Fenster
            if (ke.getKeyCode() == KeyEvent.VK_ENTER) {
                // mache irgendwas ...
            }
        }
    }
}

Dabei hast Du den Vorteil, dass ENTER "erkannt" wird, unabhängig davon, welche Komponente im Fentser gerade den Fokus hat.

mfg
Marcus
 

manuche

Bekanntes Mitglied
ansonsten kannst du deinen code auch in keyPressed legen...
Dass ignoriert zwar, dass die Taste losgelassen wird aber springt trotzdem auf den Tastendruck an!
 

dirty-mg

Bekanntes Mitglied
kommt halt drauf an, ob nur bei einigen Komponenten oder generell im Fenster auf ENTER gehört werden soll. Meine Lösung habe ich mal gebaut, als ich ein Fenster beim Drücken von ESCAPE schließen wollte. Da wäre es ja Quatsch, dass jede einzelne Komponente auf ENTER hört.
 
B

Beni

Gast
Wenn du mit Swing arbeitest, solltest du dir auchmal überlegen, die InputMap und ActionMap zu verwenden. Damit wird der Tastendruck (oder auch mehrere) automatisch abgefangen und eine Aktion ausgeführt.
 
B

Beni

Gast
Ziemlich einfach: die InputMap verbinded ein KeyStroke (eine Tastenkombination) mit einem Schlüssel, und die ActionMap den Schlüssel mit einer Action. Wenn die Tastenkombination gedrückt wird, wird die Aktion ausgeführt.

Z.B. hier wenn man "ctrl + a" oder "Enter" drückt, und der Button fokusiert ist.
Code:
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;

import javax.swing.*;


public class Test {
    public static void main( String[] args ) throws Exception{
        JFrame frame = new JFrame( "Demo" );
        JButton button = new JButton( "Button" );
        frame.add( button );
        
        InputMap input = button.getInputMap( JComponent.WHEN_FOCUSED );
        ActionMap action = button.getActionMap();
        
        input.put( KeyStroke.getKeyStroke( "control A" ), "kabum" );
        input.put( KeyStroke.getKeyStroke( KeyEvent.VK_ENTER, 0 ), "kabum" );
        
        action.put( "kabum", new AbstractAction(){
            public void actionPerformed( ActionEvent e ) {
                System.out.println( "RabadabaBUM" );
            }
        });

        frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        frame.setBounds( 20, 20, 200, 200 );
        frame.setVisible( true );
    }
}

Es gibt mehr als eine InputMap, z.B. auch eine die wirkt wenn die Component den Fokus nicht hat.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Button soll sowohl auf Klicken als auch auf die Enter-Taste reagieren Java Basics - Anfänger-Themen 9
Z Enter Taste alle 0,5 Sekunden ausführen Java Basics - Anfänger-Themen 1
P Weiter erst bei Drücken de Enter-TAste Java Basics - Anfänger-Themen 1
B Taste "Enter" drücken in einem anderen Programm? Java Basics - Anfänger-Themen 6
B 2 Textfelder Enter Taste Java Basics - Anfänger-Themen 3
P "Enter"-Taste mit Button verknüpfen Java Basics - Anfänger-Themen 3
F while mit Enter-Taste abbrechen Java Basics - Anfänger-Themen 13
G Leertaste bei Button auf Enter Taste ändern? Java Basics - Anfänger-Themen 6
C Einloggen auch per ENTER Taste (KeyListener Problem) Java Basics - Anfänger-Themen 8
Ostkreuz Int Scanner auf Enter Eingabe prüfen Java Basics - Anfänger-Themen 4
K Wie kann ich "enter" von der Console in Eclipse löschen? Java Basics - Anfänger-Themen 2
D Programm auf Enter warten lassen Java Basics - Anfänger-Themen 2
CptK Interface JTextField: Action mit Enter ausführen Java Basics - Anfänger-Themen 16
x-tshainge Bei if (eingabe = = ... ) enter als eingabe nehemen Java Basics - Anfänger-Themen 4
A wie fange ich ein "enter" auf? Java Basics - Anfänger-Themen 0
L Enter simulieren Java Basics - Anfänger-Themen 10
B Methoden Einen Char einlesen ohne Enter abzuwarten Java Basics - Anfänger-Themen 4
B jTextField bei Enter eingabe absenden? Java Basics - Anfänger-Themen 2
A fire button on JTextField Enter Java Basics - Anfänger-Themen 2
M Enter bei OK_CANCEL_OPTION auf dem Cancel Button deaktivieren? Java Basics - Anfänger-Themen 5
I Aktion ausführen bei Enter Java Basics - Anfänger-Themen 6
H JTable: Eingaben mit ENTER übernehmen Java Basics - Anfänger-Themen 2
J JTextfield mit Enter leeren Java Basics - Anfänger-Themen 3
J Schleife durch nichtseingeben/Enter beenden. Java Basics - Anfänger-Themen 5
StrikeTom Editable JComboBox + enter Wie??? Java Basics - Anfänger-Themen 3
J Mit Enter einen Button aktivieren Java Basics - Anfänger-Themen 5
K JTextField auslesen, wenn Enter gedrückt.. Java Basics - Anfänger-Themen 13
Z Enter löst einen button aus aber wie? Java Basics - Anfänger-Themen 16
M In Konsole auf Enter reagiern Java Basics - Anfänger-Themen 3
D If Schleife mit "Enter" starten Java Basics - Anfänger-Themen 10
G Enter-Zeichen aus String ersetzen Java Basics - Anfänger-Themen 5
M Einzellne Zeichen lesen und ohne Enter terminieren Java Basics - Anfänger-Themen 7
S Programmabsturz bei ENTER Java Basics - Anfänger-Themen 4
N Tastatur direkt einlesen (ohne Enter) Java Basics - Anfänger-Themen 3
S JTextField bei enter Java Basics - Anfänger-Themen 3
B textfeld mit enter auslesen klappt nicht Java Basics - Anfänger-Themen 12
M Button in einem JDialog mit Enter ausführen Java Basics - Anfänger-Themen 2
D Button und "Enter" Java Basics - Anfänger-Themen 13
B JOptionDialog mit Enter Beenden? Java Basics - Anfänger-Themen 2
T aktion bei enter Java Basics - Anfänger-Themen 2
L ActionListener bei Enter Java Basics - Anfänger-Themen 1
R ENTER in InputStream nicht lesen Java Basics - Anfänger-Themen 4
V Enter abwarten / Mehrere Zeilen einlesen Java Basics - Anfänger-Themen 3
F Bei Login mit Enter bestätigen Java Basics - Anfänger-Themen 7
H Counter durch gepresste Taste nur auf 1 erhöhen und nicht durchzählen lassen Java Basics - Anfänger-Themen 7
S Ergebnisse zwischenspeichern (Analog zu ans-Taste bei Taschenrechnern) Java Basics - Anfänger-Themen 3
D Wie frage ich ab ob die Linke maus Taste gedrückt wurde? Java Basics - Anfänger-Themen 3
Xentox501 keyevent.VK_LEFT wird beim drücken jeder belibigen Taste aktiv. Java Basics - Anfänger-Themen 3
R Input/Output Tastenschläge einer Taste zählen Java Basics - Anfänger-Themen 14
H Methoden Implementieren "Drücken Sie eine beliebige Taste" Java Basics - Anfänger-Themen 5
T MouseListener, recht Taste Java Basics - Anfänger-Themen 2
T JFrame per Taste schließen Java Basics - Anfänger-Themen 15
W Befehl ausführen bei Mausklick + gedrückte Strg-Taste Java Basics - Anfänger-Themen 2
E Taste zwischenspeichern? Java Basics - Anfänger-Themen 4
Zettelkasten Tabulator-Taste? Java Basics - Anfänger-Themen 2
F Applet mit KeyListener, "Alt"-Taste und Konflikt mit Browser Java Basics - Anfänger-Themen 2
J Escape taste geht ohne cursor im textfeld nicht. Java Basics - Anfänger-Themen 4
E AWTEventListener - Taste gedrückt oder los gelassen? Java Basics - Anfänger-Themen 2
D KeyEvent Taste blockieren. Java Basics - Anfänger-Themen 2
R Taste gedrückt = Grafik zeichen ?!? Java Basics - Anfänger-Themen 8
E Mit Taste Methode aufrufen Java Basics - Anfänger-Themen 7
C Konsolenanwendung auf belibige Taste warten Java Basics - Anfänger-Themen 2
D Erstellte Textfelder in Applet mit Tab - Taste anspringen Java Basics - Anfänger-Themen 3
M MenuShortcut nur mittels Shift+Taste Java Basics - Anfänger-Themen 3
G KeyListener für die Taste "/" Java Basics - Anfänger-Themen 5
C Erkennen einer gedrückten Taste Java Basics - Anfänger-Themen 6
V Mausklick mit rechter Taste abfangen? Java Basics - Anfänger-Themen 8
P JOptionPane und Tab-Taste Java Basics - Anfänger-Themen 4
S wie bastelt man eine pause-taste Java Basics - Anfänger-Themen 5
Dimax SizeLimitExceededException abfangen Java Basics - Anfänger-Themen 6
frager2345 Warum muss ich hier im Konstruktor meine Exeption nicht abfangen ? Java Basics - Anfänger-Themen 4
volcanos enum und switch (neu): falschen Wert mit IllegalArgumentException oder mit EnumConstantNotPresentException abfangen ? Java Basics - Anfänger-Themen 51
T Eigene Exception - ohne werfen abfangen Java Basics - Anfänger-Themen 2
K falsche Eingabe abfangen Java Basics - Anfänger-Themen 8
Kirby.exe Alle möglichen Error Möglichkeiten abfangen Java Basics - Anfänger-Themen 33
F Mehrere Exceptions in einem Catch-Block abfangen Java Basics - Anfänger-Themen 12
D Wie kann man eine solche Fehlermeldung abfangen Java Basics - Anfänger-Themen 4
W Exception in Main abfangen oder in der Methode? Java Basics - Anfänger-Themen 10
L Erste Schritte IndexOutOfBounce abfangen? Java Basics - Anfänger-Themen 17
M GUI - Fehler abfangen beim Dividieren Java Basics - Anfänger-Themen 8
J Fehler abfangen mit einer Bedingung Java Basics - Anfänger-Themen 3
B Erste Schritte Abfangen eines Fehlers/Ausbrechen aus der Schleife Java Basics - Anfänger-Themen 12
W In einer Function<Double, Double> undefinierte Rechenoperationen abfangen? Java Basics - Anfänger-Themen 3
D Input/Output Runtime().exec fehler abfangen Java Basics - Anfänger-Themen 4
A Int Eingabe: String mit Exception abfangen. Aber wie? Java Basics - Anfänger-Themen 3
P Variablen Abfangen von eingaben per java.util.Scanner und weiter Verarbeitung Java Basics - Anfänger-Themen 7
S java tastendrücke direkt abfangen und printen Java Basics - Anfänger-Themen 3
H Fehler im Konstruktor abfangen Java Basics - Anfänger-Themen 10
OnDemand Exception Abfangen Java Basics - Anfänger-Themen 5
T Division durch 0 abfangen mit Schleife Java Basics - Anfänger-Themen 4
B Erste Schritte Integer Eingabe über Scanner mit Abfangen von Eingabefehlern Java Basics - Anfänger-Themen 3
H Wie kann ich STRG+V abfangen und ändern Java Basics - Anfänger-Themen 2
B Exception abfangen Java Basics - Anfänger-Themen 33
D [jni] loadLibrary Exception abfangen Java Basics - Anfänger-Themen 9
M Windows Aktionen abfangen Java Basics - Anfänger-Themen 3
W Tastatureingabe abfangen Java Basics - Anfänger-Themen 15
S Exception abfangen Java Basics - Anfänger-Themen 2
N Fehlerquelle leere ArrayList elegant abfangen Java Basics - Anfänger-Themen 3
J Standard Exceptions abfangen Java Basics - Anfänger-Themen 5
M Datentypen Fehler abfangen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben