Key Listener mit Strg + s

syscon

Mitglied
Hi habe mir meinen eigenen Key Listener implementiert allerdings erkennt er die Constanten VK_S und CTRL _ MASK nicht was mache ich falsch? Komm irgendwie nicht mehr weiter und google hilft auch nicht mehr !

Java:
public class KeyEvent implements KeyListener{

		
		
		
		@Override
		public void keyPressed(java.awt.event.KeyEvent arg0) {
			
			if ((arg0.getKeyCode() == KeyEvent.VK_S) && ((arg0.getModifiers() & KeyEvent.CTRL_MASK) != 0)) {
                
            }
		
		}

		@Override
		public void keyReleased(java.awt.event.KeyEvent arg0) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void keyTyped(java.awt.event.KeyEvent arg0) {
			// TODO Auto-generated method stub
			
		}
		
	}
 
G

Gast2

Gast
Ich würde dafür Keybindings nutzen. Hier mal als Beispiel an nem JButton:
Java:
JButton button = new JButton();

button.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_MASK), "saveAction");
button.getActionMap().put("saveAction", new AbstractAction() {
	@Override
	public void actionPerformed(ActionEvent e) {
		System.out.println("pressed");
	}
});
Damit lassen sich auch Aktionen für alle Komponenten eines JFrames festlegen.
 

KingOfExceptions

Bekanntes Mitglied
Java:
public class KeyEvent implements KeyListener{

		
		
		
		@Override
		public void keyPressed(java.awt.event.KeyEvent arg0) {
			
			if ((arg0.getKeyCode() == KeyEvent.VK_S) && ((arg0.getModifiers() & KeyEvent.CTRL_MASK) != 0)) {
                
            }
		
		}
		
	}

Das Problem wird dabei wahrscheinlich sein, dass du es nicht schaffst zwei Tasten EXAKT gleichzeitig zu drücken... hatte das Problem auch mal, musste aber mich dann damit abfinden, dass es nicht geht.
Ich lasse mich aber da gerne noch von anderen belehren :)
 
G

Gast2

Gast
Mit exakt Treffen hat das wenig zu tun... der modifier bleibt solange aktiv wie du die STRG Taste gedrückt hälst.
Folgender Code funktioniert Problemlos:
Java:
if (e.getKeyCode() == KeyEvent.VK_S && (e.getModifiers() & KeyEvent.CTRL_MASK) > 0) {
	System.out.println("CTRL + S pressed");
}
Trotzdem würde ich die KeyBindings vorziehen.

@TO:
Beim nochmal drüberschauen habe ich gesehen dass du die Klasse oben über ihren vollständigen Namen ansprichst:
Code:
java.awt.event.KeyEvent
. Später nutzt du nur noch KeyEvent, dann musst du die Klasse importieren!
 

syscon

Mitglied
Hi danke für deine Antwort hab das jetzt auf mein Menübar angewandt klappt auch soweit ganz gut nur jetzt wird die Menübar überall angezeigt wo ich mit der Maus rübergehe ... :( auch in meinem Programm

Java:
public JMenuBar createMenuBar() {
		JMenuBar menuBar = new JMenuBar();
		
		JMenu Game= new JMenu("Game");
		
		menuBar.add(Game);
		
		JMenuItem start;
		JMenuItem quit;
		
		start=new JMenuItem("start");		
		quit=new JMenuItem("quit");
		
		start.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_MASK), "startAction");
		start.getActionMap().put("startAction", new AbstractAction() {
		    @Override
		    public void actionPerformed(ActionEvent e) {
		        
		   }
		});
		quit.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_Q, KeyEvent.CTRL_MASK), "quitAction");
		quit.getActionMap().put("quitAction", new AbstractAction() {
		    @Override
		    public void actionPerformed(ActionEvent e) {
		    	
		    	System.exit(0);
		        
		   }
		});
		
		
		Game.add(start);
		Game.add(quit);
		
		
		return menuBar;
	}
 

syscon

Mitglied
so habe den Code jetzt nochmal verändert!

Aktueller Stand:

Habe jetzt doch Key Listener benutzt war wirklich nur dieser eine Import Fehler!

Aber wie sage ich dem Menü jetzt das es den Key Listener benutzten soll?

Java:
public JMenuBar createMenuBar() {
		JMenuBar menuBar = new JMenuBar();
		
		JMenu Game= new JMenu("Game");
		
		menuBar.add(Game);
		
		JMenuItem start;
		JMenuItem quit;
		
		start=new JMenuItem("start");		
		quit=new JMenuItem("quit");
		
		KeyEvent k=new KeyEvent();
		
		//HIER KOMME ICH NICHT WEITER
		
		Game.add(start);
		Game.add(quit);
		
		
		return menuBar;
	}
	

public class KeyEvent implements KeyListener{
 
        
        
        
        @Override
        public void keyPressed(java.awt.event.KeyEvent arg0) {
            
            if ((arg0.getKeyCode() == java.awt.event.KeyEvent.VK_S) && ((arg0.getModifiers() & java.awt.event.KeyEvent.CTRL_MASK) != 0)) {
             
            	
            	
            }
            if ((arg0.getKeyCode() == java.awt.event.KeyEvent.VK_Q) && ((arg0.getModifiers() & java.awt.event.KeyEvent.CTRL_MASK) != 0)) {
             
            System.exit(0);	
            	
            }
        
        }
 
        @Override
        public void keyReleased(java.awt.event.KeyEvent arg0) {
            // TODO Auto-generated method stub
            
        }
 
        @Override
        public void keyTyped(java.awt.event.KeyEvent arg0) {
            // TODO Auto-generated method stub
            
        }
        
    }
 
G

Gast2

Gast
Warum erzeugst du da ne KeyEvent instanz?

Du kannst dem JMenuItem nen actionListener adden.
Wenn du willst dass bestimmte Menüeinträge auf Tastendruck reagieren gibts dafür die Mnemonics, dafür ist nen KeyListener wirklich das falsche.
 

syscon

Mitglied
Warum ich das benutze ganz einfach habe keine Ahnung und in der Uni kriegt man nichts beigebracht sondern es wird nur auf irgendwelche oracle tuts verwiesen :eek:

ok Accelerator

hab das mal eingefügt kommt ne Fehlermeldung bei 'C' :Syntax Error on Tokens ArgumentList Expected Instead!

Java:
start.setAccelerator(
				  KeyStroke.getKeyStroke(’C’, InputEvent.CTRL_MASK)
				);
 

syscon

Mitglied
ich komme echt nicht weiter da und muss nochmal fragen habe jetzt

Java:
start.addActionListener(this);

hinzugefügt und bekomme nun die Fehlermeldung: The Method addActionListner in the Type Abstract Button is not applicable for the Arguments (Gamefield)

Muss ich den vorher im Konstruktor Instanzieieren und wenn ja wie?
 
G

Gast2

Gast
Du musst eine Instanz eines ActionListeners übergeben. Dein Gamefield ist anscheinend kein ActionListener.

Entweder ne neue Klasse erstellen die ActionListener implementiert oder eine Klasse ActionListener implementieren lassen und this übergeben.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
berserkerdq2 Was heißt es mit FXML Listener zu setzen ind Buttons zu erstellen? Allgemeine Java-Themen 6
L Wie programmiert man einen Listener? Allgemeine Java-Themen 1
S Threads Serielle Schnittstelle mit Listener / Aufrufendes GUI Allgemeine Java-Themen 4
H Listener Verständnisproblem Allgemeine Java-Themen 5
D Action Listener Problem Allgemeine Java-Themen 3
K Threads Listener für Future finish Allgemeine Java-Themen 2
TheWhiteShadow Listener Reihenfolge Allgemeine Java-Themen 4
D Listener auf System.out.err / System.out.println Allgemeine Java-Themen 5
A Listener für constructor einer bestimmen Klasse Allgemeine Java-Themen 9
E Bild mit Listener einfügen Allgemeine Java-Themen 3
P Listener für Tastatureingaben ohne Focus Allgemeine Java-Themen 4
serjoscha WatchDog Thread und Listener Allgemeine Java-Themen 10
hdi Listener für Desktop-Veränderungen Allgemeine Java-Themen 7
T JTextField in Listener leeren Allgemeine Java-Themen 2
lenniii Listener & JList Allgemeine Java-Themen 3
K Key listener ohne Fokus aktiv behalten ? Allgemeine Java-Themen 12
G Code-Convention für Listener Allgemeine Java-Themen 2
T Observer vs Listener Allgemeine Java-Themen 18
S Listener Allgemeine Java-Themen 3
P Abstrakte Elternklasse als Listener Allgemeine Java-Themen 6
MQue KeyAction listener Allgemeine Java-Themen 2
M generische Listener Allgemeine Java-Themen 2
S Listener für Kalender Allgemeine Java-Themen 2
B Observer vs Listener (GUI-Programmierung) Allgemeine Java-Themen 5
J Listener für Ende eines Threads gesucht... Allgemeine Java-Themen 5
S Listener Implentierung bei Eingabe in Textfeld Allgemeine Java-Themen 2
G Objekt einer inneren Klasse als Listener Allgemeine Java-Themen 3
D Boolean Listener? Allgemeine Java-Themen 28
M Listener und Performance Allgemeine Java-Themen 9
D Observer/Observable Pattern vs. Listener-Konzept Allgemeine Java-Themen 4
G Listener auf aktuelles Datum / Uhrzeit Allgemeine Java-Themen 2
Escorter Eigenen Listener schreiben Allgemeine Java-Themen 3
E Gibt es so etwas wie einen Windows Listener? Allgemeine Java-Themen 6
T SelectionProvider und Listener Frage Allgemeine Java-Themen 14
I Listener, der zeitlich-periodisch aufgerufen wird Allgemeine Java-Themen 3
R Generische Listener und Sender Allgemeine Java-Themen 12
B Listener dynamisch setzen Allgemeine Java-Themen 6
A Listener Tastatur Allgemeine Java-Themen 3
E Wie: Eigener Listener, eigenes Event (möglichst einfach) Allgemeine Java-Themen 29
D Thread vs Listener Allgemeine Java-Themen 6
K Listener einem Objekt hinzufügen Allgemeine Java-Themen 3
S Listener-Problematik in komplexem Projekt Allgemeine Java-Themen 2
I Listener/Event selber machen. Allgemeine Java-Themen 4
M Time Listener ? Allgemeine Java-Themen 2
Z Zwei Listener zwischen zwei Klassen Allgemeine Java-Themen 4
B statusbar update -> mit thread oder listener? Allgemeine Java-Themen 7
M Action-listener Allgemeine Java-Themen 6
M Bean Listener hinzufügen und Methode später überschreiben Allgemeine Java-Themen 27
G Flavor-Listener Allgemeine Java-Themen 6
E Listener für Änderung der Fenstergröße Allgemeine Java-Themen 3
W Listener an ein beliebiges Objekt hänger, der mir Änderung Allgemeine Java-Themen 8
Z Problem beim Aufruf eines Listener? Allgemeine Java-Themen 4
A HILFE: subclass von Hashtable mit listener aufstellen Allgemeine Java-Themen 5
H In windowClosing() abfragen, ob STRG gedrückt wurde Allgemeine Java-Themen 8
S Strg+V ohne Fokus simulieren! Allgemeine Java-Themen 12
N Abkürzung STRG-G zu programmieren Allgemeine Java-Themen 4
D auf STRG reagieren befor Grafikkomponente Allgemeine Java-Themen 4
F abprüfen ob zb strg + alt + entf gedrückt wurde Allgemeine Java-Themen 2

Ähnliche Java Themen


Oben