KeyListener funktioniert nicht

Maxim6394

Bekanntes Mitglied
ich versuch grade die lektionen aus einem buch zu machen und bin bei nem fenster das dich durch eine tastatureingabe schließen soll.
diesen code hab ich übernommen:

Code:
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;

public class frame
extends Frame
implements KeyListener
{

public static void main (String[] args)

{


frame wnd=new frame();


}


	public frame()

	{
		super ("Nachtrichtentransfer");

		setBackground(Color.lightGray);
		setSize(500,400);
		setLocation(200,100);
		setVisible(true);
	}



	public void keyPressed(KeyEvent event)
	{
	if (event.getKeyCode() == KeyEvent.VK_ESCAPE) 
		{
		setVisible(false);
		dispose();
		System.exit(0);
		}
	}

	public void paint(Graphics g)
	{
	g.setFont(new Font("Serif",Font.PLAIN,18));
	g.drawString("Zum beenden ESC drücken",10,50);
	}


	public void keyReleased(KeyEvent event)
	{}

	public void keyTyped(KeyEvent event)
	{}

}

es wird keine fehlermeldung ausgegeben, aber das fenster reagiert auf das drücken von escape überhaupt nicht. hat jemand eine idee?
 

ARadauer

Top Contributor
dein frame ist ein keyListener, der braucht aber auch einen.
Also musst du einem frame sich selbst als keylistener hinzufügen... in der main

frame wnd = new frame();
wnd.addKeyListener(wnd);

und Klasen immer groß schreiben und ich würd keine Namen verwenden die es schon gibt... wie Frame..
 

Apfelsinenkern

Aktives Mitglied
Der Fehler ist ganz klar: Du hast eine Klasse erzeugt, die von der Framklasse erbt, und erzeugst ein weiteres fenster.... lösch das frame, das du erzeugen willst raus, und schreib: this.addKeyListener(this);
Es macht nämlich keinen sinn, zwei frames hier zu benutzen ;D

Achja, schreibs nich in die main, sondern in den konstruktor, find ich is besser...
 
S

SlaterB

Gast
> Du hast eine Klasse erzeugt, die von der Framklasse erbt, und erzeugst ein weiteres fenster....

hmm, nein?

---------

bei mir gehts,
schreibe in alle Listener-Methoden eine Ausgabe um zu testen ob zumindest irgendwo irgendwelche Events ankommen,
teste auch andere Tasten der Tastatur,

in Swing bei JPanel in JFrame muss man erst (nach setVisible(true) ) requestFocus() bzw. requestFocusInWindow() und ähnliches fürs JPanel aufrufen

KeyBindings ist noch eine Alternative

How to Write a Key Listener

Key events indicate when the user is typing at the keyboard. Specifically, key events are fired by the component with the keyboard focus when the user presses or releases keyboard keys. For detailed information about focus, see How to Use the Focus Subsystem.
Note:

To define special reactions to particular keys, use key bindings instead of a key listener. For further information, see How to Use Key Bindings.
How to Write a Key Listener (The Java™ Tutorials > Creating a GUI With JFC/Swing > Writing Event Listeners)
 

Apfelsinenkern

Aktives Mitglied
Java:
frame wnd=new frame();


}


	public frame()

	{
		super ("Nachtrichtentransfer");

		setBackground(Color.lightGray);
		setSize(500,400);
		setLocation(200,100);
		setVisible(true);
	}


Was ich meine , ist ein Schönheitsfehler, der das ganze unübersichtlich macht -.-

Er hat zwei Frames, das eine aus der Klasse, und das andere (wnd). Er setzt aber nicht wnd sichtbar, sondern das andere Fenster, gibt aber wiederum wnd den KeyListener.... Verstehst du was ich meine?

Wenn ich damit falsch liegen soll, dann korrigiere mich...
 

hdi

Top Contributor
Er hat zwei Frames, das eine aus der Klasse, und das andere (wnd).

Nein, er hat nur ein Frame. wnd == this. Ist schon alles in Ordnung in dem Code. Die Variable wnd ist lediglich überflüssig, da sie nicht weiter verwendet wird. Man könnte auch nur
Code:
new frame();
schreiben in der main, wär das selbe.
 

Maxim6394

Bekanntes Mitglied
ich hab jetzt in jedes key event System.out.println("asdf"); geschrieben. es erfolgt auch eine ausgabe, tastureingaben werden also erkannt. das problem liegt an
Code:
if (event.getKeyCode() == KeyEvent.VK_ALL_CANDIDATES) 
		{
		System.out.println("asdf");
		setVisible(false);
		dispose();
		System.exit(0);
		}
da passiert nämlich gar nichts, also wird wohl nicht erkannt dass die escape taste gedrückt wird.
 
S

SlaterB

Gast
@Apfelsinenkern
es gibt die Klasse frame und davon wird ein Objekt erzeugt, dieses eine Objekt ist ein JFrame, weil frame davon erbt,
ob bereits im Konstruktor dieses eine Objekt geändert wird, oder erst in der main-Methoden, nachdem unter der Variablen wnd abgelegt,
ist relativ egal

das passt schon, vom schlechten Klassennamen abgesehen

-----

> da passiert nämlich gar nichts, also wird wohl nicht erkannt dass die escape taste gedrückt wird.

gib doch bitte den KeyCode aus, vergleiche ihn mit der statischen Variable, also gib diese auch aus

edit: ok, Quellcode wurde einfach zwischenzeitlich geändert..
 

Maxim6394

Bekanntes Mitglied
ach ja, ich hatte das testweise ersetzt weil ich dachte dass VK_ALL_CANDIDATES alle tasten sind. jetzt funktioniert es wohl ordnungsgemäß.
 

ARadauer

Top Contributor
ich hab jetzt in jedes key event System.out.println("asdf"); geschrieben. es erfolgt auch eine ausgabe, tastureingaben werden also erkannt. das problem liegt an
Code:
if (event.getKeyCode() == KeyEvent.VK_ALL_CANDIDATES) 
		{
		System.out.println("asdf");
		setVisible(false);
		dispose();
		System.exit(0);
		}
da passiert nämlich gar nichts, also wird wohl nicht erkannt dass die escape taste gedrückt wird.

naja wenn mal asdf ausgegeben wird... sollte das System.exit(0); sein übriges tun... ähmn wie startest du das programm? beim mir gehts
 

Apfelsinenkern

Aktives Mitglied
@slater b: ok, da bin ich eines besseren belehrt worden :) wieder was gelernt. Ich arbeite eh nur mit javax.swing, mit awt komponenten kenn ich mich ned so aus :D
 

hdi

Top Contributor
Ich arbeite eh nur mit javax.swing, mit awt komponenten kenn ich mich ned so aus
Ein KeyListener ist keine Komponente, und es gibt kein Pendant aus dem Swing-Package. Auch in Swing-Applikationen benutzt man die AWT-Listener und -Events. Und rate mal, wovon JFrame ableitet ;) Es ist nur so, dass man die Widgets (Fenster, Buttons, usw) nicht durchmischen sollte - aber AWT und Swing gehen Hand in Hand.
 
S

SlaterB

Gast
es ist wohl eher Frame vs JFrame gemeint,
das Problem mit evtl. doppelten Objekten bei Vererbung ist allerdings auch davon bzw. generell von GUI unabhängig ;) ,
bei jeder Klasse besser genau zu durchschauen
 

Maxim6394

Bekanntes Mitglied
ich hab jetzt nochmal bisschen was anderes versucht:

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;





public class window
extends Window


{

	public static void main(String[] args)

	{

	window wnd=new window();
	wnd.setSize(300,200);
	wnd.setVisible(true);
	
	
	}
	
	public window()
		{
		super(new Frame());
		setBackground(Color.white);
	addKeyListener(new MyKeyListener());

		}

	public void paint(Graphics g)

	{
		
	}


	class MyKeyListener
		extends KeyAdapter
		{
		
		public void keyPressed(KeyEvent event)
			{
			System.out.println("asdf");
			
			}	
		
		}
	
}

da wird jetzt auch keinerlei eingabe erkannt, es wird nichts ausgegeben.
 
G

Gast2

Gast
Du erstellst in der main auch nen neuen Frame, du musst da aber ne Instanz deiner Klasse window erstellen.

EDIT:
code wegeditiert :/
 
S

SlaterB

Gast
es gibt auch JAVA-Tags statt CODE-Tags...

im Moment erzeugst du direkt ein Frame-Objekt, die Klasse window ist bis auf main-Methode unbeteiligt
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z KeyListener funktioniert nicht? Weshalb? Java Basics - Anfänger-Themen 8
Gfreak23 Input/Output KeyListener funktioniert auf Laptop nicht allerdings auf Tower-PC Java Basics - Anfänger-Themen 8
K Input/Output KeyListener funktioniert nicht Java Basics - Anfänger-Themen 3
J KeyListener (keyTyped) funktioniert nicht Java Basics - Anfänger-Themen 9
Das Brot Nach .add(JRadioButton) funktioniert der KeyListener nicht mehr Java Basics - Anfänger-Themen 2
U ActionListener und KeyListener - KeyListener funktioniert nicht Java Basics - Anfänger-Themen 2
M TabbedPane: KeyListener funktioniert nicht mehr Java Basics - Anfänger-Themen 8
H KeyListener funktioniert nicht Java Basics - Anfänger-Themen 8
A KeyListener funktioniert nicht Java Basics - Anfänger-Themen 7
E Keylistener funktioniert nicht richtig. Java Basics - Anfänger-Themen 17
G Applet mit Keylistener funktioniert nicht Java Basics - Anfänger-Themen 3
D KeyListener funktioniert nicht Java Basics - Anfänger-Themen 10
O KeyListener funktioniert nur wenn er will Java Basics - Anfänger-Themen 2
P Wie kann ich meine Keylistener Klasse unterscheiden lassen, von welcher "Quelle" der Input kommt? Java Basics - Anfänger-Themen 2
B Bild per KeyListener drehen Java Basics - Anfänger-Themen 1
javalux123 Keylistener auf andere Fenster Java Basics - Anfänger-Themen 3
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
M KeyListener reagiert nicht Java Basics - Anfänger-Themen 4
M Mit KeyListener Farbe von Label ändern Java Basics - Anfänger-Themen 13
N Java Keylistener Java Basics - Anfänger-Themen 2
B KeyListener funkioniert nicht Java Basics - Anfänger-Themen 2
F KeyListener Java Basics - Anfänger-Themen 3
S Erste Schritte 2D Grafik Probleme mit KeyListener. Java Basics - Anfänger-Themen 18
G KeyListener und JButton vertragen sich nicht Java Basics - Anfänger-Themen 1
J-Gallus Keylistener verstehen Java Basics - Anfänger-Themen 17
S Keylistener Java Basics - Anfänger-Themen 16
S Keylistener im Grafikfenster Java Basics - Anfänger-Themen 3
H Mouse- und KeyListener Probleme? Java Basics - Anfänger-Themen 5
N KeyListener in Thread Java Basics - Anfänger-Themen 0
LexeB4F for schliefe in KeyListener Java Basics - Anfänger-Themen 3
R KeyListener auslagern Java Basics - Anfänger-Themen 3
J KeyListener aus anderer Klasse bereitet Probleme Java Basics - Anfänger-Themen 1
T KeyListener Java Basics - Anfänger-Themen 2
J KeyListener - mal wieder... Java Basics - Anfänger-Themen 2
TheSorm KeyListener Problem Java Basics - Anfänger-Themen 4
M KeyListener Java Basics - Anfänger-Themen 3
S KeyListener/ActionListener/paint()/repaint() Java Basics - Anfänger-Themen 3
D KeyListener nicht mehr aktiv nach ActionPerformed Java Basics - Anfänger-Themen 2
C Mehrere Tasten beim KeyListener gleichzeitig lesen Java Basics - Anfänger-Themen 2
L Input/Output Java 3D mit KeyListener Java Basics - Anfänger-Themen 1
S KeyListener reagiert nicht. Java Basics - Anfänger-Themen 4
L KeyListener ohne textfeld Java Basics - Anfänger-Themen 4
J KeyListener,MouseListener,MouseMotionListener und static Java Basics - Anfänger-Themen 7
P Klassen Bei KeyEvent in KeyListener den Tastendruck abbrechen Java Basics - Anfänger-Themen 5
B KeyListener als allgemeine Methode Java Basics - Anfänger-Themen 5
H KeyListener auf ganzes Fenster setzen Java Basics - Anfänger-Themen 14
0 KeyListener ausserhalb der Applikation Java Basics - Anfänger-Themen 5
G KeyListener Java Basics - Anfänger-Themen 4
D KeyListener und ActionListener Problem Java Basics - Anfänger-Themen 6
J KeyListener funtioniert nicht! Java Basics - Anfänger-Themen 3
J KeyListener Java Basics - Anfänger-Themen 11
P Input/Output KeyListener reagiert nicht Java Basics - Anfänger-Themen 4
G KeyListener, Fokus Java Basics - Anfänger-Themen 8
A Input/Output Keylistener Aktiv schalten Java Basics - Anfänger-Themen 8
J keyListener - Genau 1 Aktion soll bei 1 Tastenausdruck ausgeführt werden Java Basics - Anfänger-Themen 11
S KeyListener Java Basics - Anfänger-Themen 2
A Erste Schritte Problem mit KeyListener Java Basics - Anfänger-Themen 6
Maxim6394 KeyListener geht nicht Java Basics - Anfänger-Themen 15
A Wie KeyListener adden? Java Basics - Anfänger-Themen 15
U KeyListener StackOverflowError Java Basics - Anfänger-Themen 2
W KeyListener auf Applet mit Runnable Java Basics - Anfänger-Themen 4
M Apfel-Spiel KeyListener Java Basics - Anfänger-Themen 33
Luk10 KeyListener Java Basics - Anfänger-Themen 13
S KeyListener aus anderer Klasse hinzufügen Java Basics - Anfänger-Themen 19
P KeyListener im Applet Java Basics - Anfänger-Themen 2
S KeyListener-Anwendung Java Basics - Anfänger-Themen 7
A KeyListener funzt ned Java Basics - Anfänger-Themen 6
D KeyListener, Unterscheidung Groß/Kleinbuchstaben Java Basics - Anfänger-Themen 3
S KeyListener als class? Java Basics - Anfänger-Themen 4
F Applet mit KeyListener, "Alt"-Taste und Konflikt mit Browser Java Basics - Anfänger-Themen 2
P KeyListener Java Basics - Anfänger-Themen 2
S KeyListener für einfaches Programm Java Basics - Anfänger-Themen 3
S KeyListener aktiv auch wenn minimiert? Java Basics - Anfänger-Themen 4
Z Globaler Keylistener Java Basics - Anfänger-Themen 2
V KeyListener Beispiel Java Basics - Anfänger-Themen 13
T canvas killt KeyListener Java Basics - Anfänger-Themen 2
J Keylistener aber wie jTextField auswahl? Java Basics - Anfänger-Themen 3
D KeyListener, nichts passiert Java Basics - Anfänger-Themen 6
D Keylistener zu langsam Java Basics - Anfänger-Themen 7
C Problem mit JPopupMenu, JTextField und Keylistener Java Basics - Anfänger-Themen 2
G Keylistener in einer Schleife Java Basics - Anfänger-Themen 9
M problem mit keylistener Java Basics - Anfänger-Themen 2
N KeyListener ohne GUI? Java Basics - Anfänger-Themen 5
M KeyListener Java Basics - Anfänger-Themen 3
T KeyListener wird nicht ausgelöst Java Basics - Anfänger-Themen 6
O KeyListener Java Basics - Anfänger-Themen 8
Developer_X KeyListener ohne JFrame Java Basics - Anfänger-Themen 13
H KeyListener Java Basics - Anfänger-Themen 4
Developer_X KeyListener Actions (hat mit Java3D zu tun) Java Basics - Anfänger-Themen 20
Developer_X JFrame soll KeyListener adden Java Basics - Anfänger-Themen 32
F Keylistener Java Basics - Anfänger-Themen 12
hdi KeyListener : keyTyped() nicht nutzbar? Java Basics - Anfänger-Themen 1
StickToFreak Runnable + KeyListener? Java Basics - Anfänger-Themen 32
dl85hej Keylistener Java Basics - Anfänger-Themen 16
H KeyListener will nicht reagieren Java Basics - Anfänger-Themen 5
R Fehlersuche - KeyListener, KeyAdaper - Nichts Klappt! Java Basics - Anfänger-Themen 2
G Prob. mit KeyListener und Unterklasse Java Basics - Anfänger-Themen 5
G Keylistener nur besimmte Zeichen zulassen Java Basics - Anfänger-Themen 8
hdi keylistener hat keinen fokus oder: listener ohne frame? Java Basics - Anfänger-Themen 10
D KeyListener Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben