KeyListener funktionieren nicht

Status
Nicht offen für weitere Antworten.

jottes

Mitglied
Hallo Leute...
ich habe da ein kleines problem mit meinen KeyListener.
Wenn ich an den Button btn4 einen KeyListener hänge, reagiert er nicht. Der ActionListener geht.
Ich füge das JPanel (Code unten) einem JFrame hinzu...
woran kann das liegen?


Code:
import javax.swing.*;

import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridLayout;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.*;
import java.awt.*;

public class FunctionKeys extends JPanel{

	public FunctionKeys(){
		GridBagLayout FuncLayout = new GridBagLayout();		
		GridBagConstraints constraints = new GridBagConstraints();
		Dimension PaneDim = new Dimension(300,200);
		this.setLayout(FuncLayout);
		this.setBackground(new Color(58,110,165));		
		this.setPreferredSize(PaneDim);
		
		Dimension BtnDim = new Dimension(60,30);		
		JButton btn1 = new JButton("F9");
		JButton btn2 = new JButton("F10");
		JButton btn3 = new JButton("F11");		
		JButton btn4 = new JButton("F12");
		btn1.setForeground(Color.WHITE);
		btn2.setForeground(Color.WHITE);
		btn3.setForeground(Color.WHITE);
		btn4.setForeground(Color.WHITE);
		btn1.setPreferredSize(BtnDim);
		btn2.setPreferredSize(BtnDim);
		btn3.setPreferredSize(BtnDim);
		btn4.setPreferredSize(BtnDim);		
				
		constraints.gridwidth = GridBagConstraints.LINE_START;
	    constraints.gridheight = 1;
	    constraints.insets = new Insets(5,5,5,5);
	    this.add(btn1,constraints);
	    
	    constraints.gridwidth = GridBagConstraints.REMAINDER;
	    constraints.gridheight = 1;
	    constraints.insets = new Insets(5,5,5,5);
	    JLabel btn1_text = new JLabel("Storno Einzelposition");
	    btn1_text.setForeground(Color.WHITE);
	    this.add(btn1_text, constraints);
		
	    constraints.gridwidth = GridBagConstraints.LINE_START;
	    constraints.gridheight = 1;
	    constraints.insets = new Insets(5,5,5,5);	    
	    this.add(btn2,constraints);
	    
	    constraints.gridwidth = GridBagConstraints.REMAINDER;
	    constraints.gridheight = 1;
	    constraints.insets = new Insets(5,5,5,5);
	    JLabel btn2_text = new JLabel("Storno alle Positionen");
	    btn2_text.setForeground(Color.WHITE);
	    this.add(btn2_text,constraints);
	    
	    constraints.gridwidth = GridBagConstraints.LINE_START;
	    constraints.gridheight = 1;
	    constraints.insets = new Insets(5,5,5,5);	    
	    this.add(btn3,constraints);
	    
	    constraints.gridwidth = GridBagConstraints.REMAINDER;
	    constraints.gridheight = 1;
	    constraints.insets = new Insets(5,5,5,5);
	    JLabel btn3_text = new JLabel("Buchungsvorgang einleiten");
	    btn3_text.setForeground(Color.WHITE);
	    this.add(btn3_text,constraints);
	    
		
	    constraints.gridwidth = GridBagConstraints.LINE_START;
	    constraints.gridheight = 1;
	    constraints.insets = new Insets(5,5,5,5);
	    this.add(btn4,constraints);
	    
	    constraints.gridwidth = GridBagConstraints.REMAINDER;
	    constraints.gridheight = 1;
	    constraints.insets = new Insets(5,5,5,5);
	    JLabel btn4_text = new JLabel("Programm beenden");
	    btn4_text.setForeground(Color.WHITE);
	    this.add(btn4_text,constraints);	    		
		
		btn4.addKeyListener(new KeyAdapter(){
			public void keyPressed(KeyEvent e){
				System.out.println(e.getKeyChar());				 									
			}
			public void keyTyped(KeyEvent e){
				System.out.println(e.getKeyChar());
			}
			public void keyReleased(KeyEvent e){
				System.out.println(e.getKeyChar());
			}
		});
		
		btn4.addActionListener(
				new ActionListener(){
					public void actionPerformed(ActionEvent e){
					  System.exit(0);	
					}
		});

	}
	
}
 

jottes

Mitglied
Auf den Button klicken klappt... bekommst du auch deine gedrückten Tasten in der Konsole angezeigt (die keyListener?)

Gruß, Jochen
 

The_S

Top Contributor
ja, bekomm ich. Voraussetzung ist natürlich dass dein Button4 auch den Fokus hat. Aber das sollte ja klar sein.
 

jottes

Mitglied
mal ne dumme Frage... ich habe ja wie du siehst mehrere Buttons... da sollen überall KeyListener- und ActionListener drauf. Dann müsste ich ja allen Kompionenten gleichzeitig den Fokus geben, damit das funzt... ist das überhaupt möglich?
 

The_S

Top Contributor
Es kann nur immer eine Komponente gleichzeitig den Fokus haben. Warum addest du nicht EINEN KeyListener ALLEN Buttons? Was willste denn am Ende erreichen? Ich bin mir sicher du denkst zu kompliziert ;) .
 

jottes

Mitglied
Ich habe ne JTable. Über die F-tasten möchte ich jeweils verschiedene Daten der JTable hinzufügen. Die Inhalte hole ich mir aus einer Datenbank in einen Vector aus Vektoren. Die Anzahl Datensätze ist gleich die Anzahl der im Vektor liegenden Vektoren.

Ich muss für jeden Datensatz also einen Button erzeugen, der bestimmten Inhalt in die JTable added. Denke ich da auch zu kompliziert?

Wie kann ich das denn machen?
 

The_S

Top Contributor
jottes hat gesagt.:
Ich habe ne JTable. Über die F-tasten möchte ich jeweils verschiedene Daten der JTable hinzufügen.

Alle Componenten die den Fokus haben können mit dem selben KeyListener ausrüsten, oder nen Mnemonic setzen (kA ob der auch mit den F-Tasten funzt).

jottes hat gesagt.:
Ich muss für jeden Datensatz also einen Button erzeugen, der bestimmten Inhalt in die JTable added.

Wenn das designtechnisch dein Wunsch ist ...
 

jottes

Mitglied
so, habe jetzt im JFrame ActionListener und KeyListener implementiert
in diesem JFrame packe ich ja sämtliche Komponenten rein. Da müssten doch jetzt
alle Events abgefangen werden, oder?

Code:
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.*;

import javax.swing.*;
import java.util.Vector;


public class KassenGui extends JFrame implements ActionListener, KeyListener{

	public void keyPressed(KeyEvent e) {
//		if(e.getKeyCode()==KeyEvent.VK_F12){
//			System.exit(0);
//		}		
		System.out.println(e.getKeyCode());
	}

	public void keyReleased(KeyEvent e) {
//		if(e.getKeyCode()==KeyEvent.VK_F12){
//			System.exit(0);
//		}
		System.out.println(e.getKeyCode());
	}

	public void keyTyped(KeyEvent e) {
//		if(e.getKeyCode()==KeyEvent.VK_F12){
//			System.exit(0);
//		}
		System.out.println(e.getKeyCode());		
	}

	public void actionPerformed(ActionEvent e) {
		
		
	}

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public KassenGui(){
		Dimension ScreenSize = Toolkit.getDefaultToolkit().getScreenSize();						
		this.setSize(ScreenSize);
		this.setUndecorated(false);
		this.getContentPane().setLayout(new GridLayout(3,3));
		this.setTitle("technotrans Kantinensystem");
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		//this.getContentPane().setLayout(new FlowLayout());		
		
		this.getContentPane().setLayout(new GridBagLayout());
		this.getContentPane().setBackground(new Color(58,110,165));
		
		GridBagConstraints constraints = new GridBagConstraints();	    
		Component c;

		//add components		
	    constraints.gridwidth = GridBagConstraints.REMAINDER;
	    constraints.gridheight = 3;
	    constraints.insets = new Insets(0,5,30,5);
	    JLabel HeadLabel = new JLabel("Kantinen-Abrechnungssystem");	    
	    HeadLabel.setForeground(Color.WHITE);
	    Font HeadFont = new Font("Sans Serif", Font.BOLD, 24);	    
	    HeadLabel.setFont(HeadFont);
	    this.getContentPane().add(HeadLabel,constraints);
	    
	    constraints.gridwidth = GridBagConstraints.FIRST_LINE_START;
	    constraints.gridheight = 1;
	    constraints.insets = new Insets(0,5,0,5);
	    this.getContentPane().add(new MenueKeys(),constraints);
	    
	    constraints.gridwidth = GridBagConstraints.REMAINDER;
	    constraints.gridheight= 1;
	    constraints.insets = new Insets(0,5,0,5);
	    this.getContentPane().add(new OrderTab(),constraints);
	    
	    constraints.gridwidth = GridBagConstraints.RELATIVE;
	    constraints.gridheight= 1;
	    constraints.insets = new Insets(0,5,0,5);
	    this.getContentPane().add(new FunctionKeys(), constraints);
	    
	    constraints.gridwidth = GridBagConstraints.REMAINDER;
	    constraints.gridheight= 1;
	    constraints.insets = new Insets(0,5,0,5);
	    this.getContentPane().add(new LiveBooking());
		
		this.setVisible(true);		
	}
	
}
 

jottes

Mitglied
hat der Frame nicht automatisch die Listener zugeordnet, weil ich das Interface implementiere und die Methoden überschreibe?

Wie kann ich denn die Listener dem Frame sonst zuordnen.. ?

P.S. danke erstmal für deine schnellen Antworten...
 

jottes

Mitglied
Habe es hinbekommen...
ich musste im Frame setFocusable(true) setzen und den
Listener mit addKeyListener(this) hinzufügen

... thx "Hobbit im Blutrausch"
 

thE_29

Top Contributor
Oder aber du verwendest den AWTEventListener!

Der reagiert generell auf alles (egal wo der Focus ist)

Suche mal im Board danach!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P JTextfield Text durch Keylistener verändern AWT, Swing, JavaFX & SWT 4
N Keylistener & JComboBox AWT, Swing, JavaFX & SWT 5
B Swing JButton mit KeyListener AWT, Swing, JavaFX & SWT 3
H KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
Fridolin111 Der KeyListener Löst kein event aus AWT, Swing, JavaFX & SWT 6
B KeyListener auf JFrame reagiert nicht AWT, Swing, JavaFX & SWT 8
N Mit KeyListener ein rechteck zeichnen AWT, Swing, JavaFX & SWT 9
S Swing JPanel nimmt keinen KeyListener an AWT, Swing, JavaFX & SWT 7
P JPanel KeyListener hinzufügen AWT, Swing, JavaFX & SWT 8
B Swing KeyListener auf Container? AWT, Swing, JavaFX & SWT 1
T Event Handling KeyListener reagiert nicht AWT, Swing, JavaFX & SWT 10
K KeyListener ohne JFrame AWT, Swing, JavaFX & SWT 9
C Keylistener funktioniert nicht AWT, Swing, JavaFX & SWT 1
T KeyListener funktioniert nicht wenn ich ein JButton hinzufüge AWT, Swing, JavaFX & SWT 1
A Event Handling Muss ich 'KeyListener' tasuend mal zufügen? AWT, Swing, JavaFX & SWT 7
S mit keylistener frame schliessen AWT, Swing, JavaFX & SWT 8
S Keylistener reagiert bei Buttons nicht. AWT, Swing, JavaFX & SWT 8
S KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 2
R KeyListener in mehreren Panels AWT, Swing, JavaFX & SWT 5
V Tastatur KeyListener für mehrere Buttons AWT, Swing, JavaFX & SWT 1
J JLabel Visible setzen in KeyListener AWT, Swing, JavaFX & SWT 13
X KeyListener AWT, Swing, JavaFX & SWT 0
L KeyListener für JDialog AWT, Swing, JavaFX & SWT 7
N KeyListener funktioniert nicht richitg AWT, Swing, JavaFX & SWT 4
Z SnakeGame Schlange per KeyListener bewegen! AWT, Swing, JavaFX & SWT 10
T KeyListener AWT, Swing, JavaFX & SWT 2
GianaSisters JFrame mit JInternalFrames, Keylistener-Problem AWT, Swing, JavaFX & SWT 9
7 KeyListener tastatur temporär blockieren AWT, Swing, JavaFX & SWT 7
7 AWT problem: KeyListener/ test im Label umändern AWT, Swing, JavaFX & SWT 4
B SWT Problem: Wie kann man für jede TableColumn einen eigenen KeyListener registrieren. AWT, Swing, JavaFX & SWT 1
U Mouse + Keylistener AWT, Swing, JavaFX & SWT 12
K ActionListener mit KeyListener AWT, Swing, JavaFX & SWT 7
J JWindow und keylistener AWT, Swing, JavaFX & SWT 1
F JavaFX KeyListener zum Fenster öffnen/schließen AWT, Swing, JavaFX & SWT 9
A Swing KeyEvent mit KeyListener und KeyAdapter kürzer schreiben AWT, Swing, JavaFX & SWT 7
D JTextArea auf KeyListener Command AWT, Swing, JavaFX & SWT 6
C KeyListener AWT, Swing, JavaFX & SWT 5
Doopy Event Handling KeyListener funktioniert nach Restart nicht mehr AWT, Swing, JavaFX & SWT 7
S KeyListener geht nicht AWT, Swing, JavaFX & SWT 12
C Swing KeyListener in JPanel AWT, Swing, JavaFX & SWT 2
A KeyListener Button wechseln & Programm beenden AWT, Swing, JavaFX & SWT 4
M Frage zu KeyListener bzgl. JApplet AWT, Swing, JavaFX & SWT 3
H Bild mit KeyListener verschieben AWT, Swing, JavaFX & SWT 2
C JTextField KeyListener AWT, Swing, JavaFX & SWT 6
Y KeyListener, GUI Thread, repaint AWT, Swing, JavaFX & SWT 7
bluerob Fehler bei Wertübermittlung über KeyListener AWT, Swing, JavaFX & SWT 3
E Swing KeyListener implementieren AWT, Swing, JavaFX & SWT 12
P KeyListener reagiert nicht AWT, Swing, JavaFX & SWT 11
M KeyListener richtig implementieren AWT, Swing, JavaFX & SWT 3
T KeyListener AWT, Swing, JavaFX & SWT 4
R KeyListener in JWindow AWT, Swing, JavaFX & SWT 7
T BlueJ KeyListener AWT, Swing, JavaFX & SWT 7
Z KeyListener AWT, Swing, JavaFX & SWT 2
M Swing KeyListener in JTextfield AWT, Swing, JavaFX & SWT 4
C Swing KeyListener für JPanel funktioniert nicht AWT, Swing, JavaFX & SWT 8
VfL_Freak Swing KeyListener, um einen Dialog per ESC zu schließen AWT, Swing, JavaFX & SWT 6
A Keylistener reagiert nicht AWT, Swing, JavaFX & SWT 10
D Problem mit KeyListener AWT, Swing, JavaFX & SWT 2
J KeyListener um auf CTRL-Enter zu reagieren AWT, Swing, JavaFX & SWT 2
L Snake in Java KeyListener Problem AWT, Swing, JavaFX & SWT 30
B "globaler" KeyListener? AWT, Swing, JavaFX & SWT 3
B JTable TableHeader KeyListener AWT, Swing, JavaFX & SWT 4
S Swing KeyListener und JList AWT, Swing, JavaFX & SWT 2
R KeyListener funzt nicht AWT, Swing, JavaFX & SWT 2
X KeyListener AWT, Swing, JavaFX & SWT 4
P KeyListener + Animation AWT, Swing, JavaFX & SWT 2
M Fokus für KeyListener AWT, Swing, JavaFX & SWT 9
V Problem mit KeyListener im Fullscreen-Modus AWT, Swing, JavaFX & SWT 2
M AWT KeyListener reagiert nicht AWT, Swing, JavaFX & SWT 10
C Swing KeyListener reagiert nicht AWT, Swing, JavaFX & SWT 7
K JFrame + KeyListener + Runnable = Fehler AWT, Swing, JavaFX & SWT 3
F Tastenabfrage (KeyListener) AWT, Swing, JavaFX & SWT 2
D KeyListener Problem bei JPanel wechsel AWT, Swing, JavaFX & SWT 2
S Swing JTree mit KeyListener AWT, Swing, JavaFX & SWT 2
L AWT KeyListener, requestFocus und KeyBindings AWT, Swing, JavaFX & SWT 8
E JFrame akzeptiert den KeyListener nicht AWT, Swing, JavaFX & SWT 3
F Swing Problem mit KeyListener||paintComponent() in JFrame AWT, Swing, JavaFX & SWT 12
P Swing KeyListener hört nur manchmal zu AWT, Swing, JavaFX & SWT 2
Screen Focus Problem , KeyListener, TextField , Key AWT, Swing, JavaFX & SWT 4
earlgrey_tea AWT KeyListener bekommt keine Signale AWT, Swing, JavaFX & SWT 3
L Problem mit KeyListener AWT, Swing, JavaFX & SWT 3
A KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 4
D KeyListener-Problem nach dem "Gedrückthalten" einer Taste AWT, Swing, JavaFX & SWT 10
B Swing Keylistener fuer Dialog-Buttons AWT, Swing, JavaFX & SWT 2
B KeyListener Strg+s AWT, Swing, JavaFX & SWT 5
D Globaler Keylistener AWT, Swing, JavaFX & SWT 4
M problem mit keylistener/textarea AWT, Swing, JavaFX & SWT 6
M KeyListener Problem unter Firefox AWT, Swing, JavaFX & SWT 2
L AWT KeyListener, Taste gedrückt halten AWT, Swing, JavaFX & SWT 12
M Komisches Verhalten: JCombobox mit KeyListener AWT, Swing, JavaFX & SWT 13
capgeti SWT KeyListener 2 Tasten Problem AWT, Swing, JavaFX & SWT 3
R KeyListener - welcher Komponente hinzufügen AWT, Swing, JavaFX & SWT 5
Developer_X AWT KeyListener wird nicht ausgeführt! AWT, Swing, JavaFX & SWT 3
N JFrame und KeyListener AWT, Swing, JavaFX & SWT 6
M KeyListener reagiert nach Buttondruck nicht mehr AWT, Swing, JavaFX & SWT 4
A AWT Button verhindert ausführung vom Keylistener AWT, Swing, JavaFX & SWT 4
R KeyListener hinzufügen AWT, Swing, JavaFX & SWT 7
T Swing KeyListener mit mehreren Objekten AWT, Swing, JavaFX & SWT 2
G KeyListener AWT, Swing, JavaFX & SWT 3
E KeyListener AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen


Oben