KeyListener geht nicht

Solor

Aktives Mitglied
Hey,
ich habe ein kleines Programm geschrieben, bei dem am Anfang ein Menu eingeblendet wird:
[Java]
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

public class HMenu extends JPanel{
public HMenu(ActionListener al)
{
setLayout(new GridLayout(4, 1));
//Button Start
JButton Start = new JButton("Start");
Start.addActionListener(al);
//Button Optionen
JButton Options = new JButton("Optionen");
Options.addActionListener(al);
//Button Statistiken
JButton Stats = new JButton("Statistiken");
Stats.addActionListener(al);
//Button Exit
JButton Exit = new JButton("Beenden");
Exit.addActionListener(al);
this.add(Start);
this.add(Options);
this.add(Stats);
this.add(Exit);
}
}
[/Java]
[Java]
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class GamePanel extends JPanel implements Runnable, KeyListener, MouseListener, MouseMotionListener, ActionListener{
Thread th;
HMenu hm;
public GamePanel()
{
this.setPreferredSize(new Dimension(width, height));
this.setLayout(new GridLayout(1,1));
this.addKeyListener(this);
hm = new HMenu(this);
this.add(hm);
th = new Thread(this);
th.start();
}
[/Java]
Das funktioniert soweit auch. Wenn ich jetzt aber in meiner actionPerformed - Methode beim Klick auf Start alles wieder entferne:
[Java]
public void actionPerformed(ActionEvent arg0) {
if (arg0.getActionCommand().compareTo("Start") == 0)
{
System.out.println("Start");
this.remove(hm);
}
}
[/Java]
dann funktioniert mein Key-Listener nicht mehr, der MouseMotionListener aber schon noch:
[Java]
public void mouseMoved(MouseEvent arg0)
{
System.out.println("B");
}
public void keyPressed(KeyEvent arg0)
{
System.out.println("A");
}
[/Java]
Der KeyListener hatte außerdem früher auch schon funktioniert, seit ich das Menü eingabut habe, tut er es aber nicht mehr :noe:
Die Programmteile sind natürlich gekürzt, allerdings denke ich, dass ich euch alle relevanten Informationen gegeben habe.
LG, Solor
 
Zuletzt bearbeitet:

Timothy Truckle

Top Contributor
Wenn Du jedem Button seine eigene [JAPI]ActionListener[/JAPI]-Implementierung spendieren würdest bräuchtest Du nicht erst testen, welcher Button gegrückt wurde. Dann würde sich (wahrscheinlich) auch dein Problem erledigen.

bye
TT
 

Solor

Aktives Mitglied
Hat denn das wirklich was damit zu tun? Ich lösche da ja nur das Panel, ändert das was, ob ich das jetzt hier oder dort lösche?
 

Solor

Aktives Mitglied
Ich ändere das ;) aber das wird ja wohl kaum der Fehler sein...
Und ist es denn überhautp sinnvoll, für jeden Button eine eigene ActionListener-Implementierung zu schreiben?
 

Timothy Truckle

Top Contributor
Hat denn das wirklich was damit zu tun? Ich lösche da ja nur das Panel, ändert das was, ob ich das jetzt hier oder dort lösche?
Zugegeben, dass wohl nicht. wäre aber mehr OO-like...

Überhaupt würde ich das Design noch mal übersenken: Statt die Komponenten zu entferenen solltest Du Dir mal [JAPI]CardLayout[/JAPI] anschauen.

Dass Problem dürfte aber da her rühren, das mit dem Menü auch die Komponente entfernt wird, an der der (nicht mehr funktionierende) [JAPI]KeyListener[/JAPI] hängt...

bye
TT
 

Solor

Aktives Mitglied
Ich habe bemerkt, dass ich den den KeyListener im JFrame, und nicht im JPanel zuweise, also im JFrame steht dann:
[Java]
GamePanel gp = new GamePanel();
this.addKeyListener(gp);
[/Java]
Wenn ich jetzt aber im GamePanel den KeyListener zuweise funktioniert er auch ohne Menü nicht...
Wo sollte ich denn die Methode addKeyListener(KeyListener kl) aufrufen?
Im HauptFrame, oder im GamePanel?
 

Timothy Truckle

Top Contributor
Wenn ich jetzt aber im GamePanel den KeyListener zuweise funktioniert er auch ohne Menü nicht...
Wo sollte ich denn die Methode addKeyListener(KeyListener kl) aufrufen?
Im HauptFrame, oder im GamePanel?
Der Keylistener funktioniert immer nur an der Komponente, die gerade den Focus hat.

Ich könne mir vorstellen, dass Du eigentlich gar keinen Keylistener willst sondern einen Shortcut
How do I make keyboard shortcuts in Java? - Yahoo! Answers

bye
TT
 

Solor

Aktives Mitglied
Neee ich brauche schon einen keyListener, da ich eine Figur habe, die ich durch drücken der Pfeiltasten bewege...
Oder geht das auch damit? Mir kam das jetzt eher so vor, als wäre das für Buttons geeignet, so wie die Shortcouts in einer MenuBar...Oder liege ich da jetzt falsch?
 

Timothy Truckle

Top Contributor
Neee ich brauche schon einen keyListener, da ich eine Figur habe, die ich durch drücken der Pfeiltasten bewege...
Oder geht das auch damit? Mir kam das jetzt eher so vor, als wäre das für Buttons geeignet, so wie die Shortcouts in einer MenuBar...Oder liege ich da jetzt falsch?
Na dann erzeuge doch eine [JAPI]JComponent[/JAPI] mit den Key-Listener dran (Button, Panel - ganz egal solange es den Focus bekommen kann (was ein Lable zB nicht kann)). Ist ja dann nicht schlimm, wen der nur dann funktioniert, wenn der Button den Focus hat. Blöd wirds nur, wenn deine Figur mal von Hindernissen verdeckt werden sollte.

bye
TT
 

Solor

Aktives Mitglied
Bin ich jetzt zu blöd? denn mein GamePanel ist doch aus dem JPanel abgeleitet, was ja dann eigentlcih gehen müsste...oder meinst du was anderes? Könntest du das dann vielleicht näher ausführen, denn dann weiß ich nciht was du meinst :(
 

Solor

Aktives Mitglied
Danke, ich habs jetzt gelöst. Und zwar habe ich einfach, nachdem ich die Komponenten gelöscht habe, die Methode grabFocus() aufgerufen - dadurch bekommt mein GamePanel wieder den Focus und es geht einwandfrei
 
Ä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
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
L Focus für KeyListener auf verschiedene Panels AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben