Input/Output Keylistener Aktiv schalten

AtlanTK

Mitglied
Hi
ich habe ein Problem mit einem JFrame in dem ich 2 JPanels angelegt habe.
In einem Panel ist ein Keylistener, der auf Pfeiltasten reagiert, und in dem Anderen ein Textfeld und ein Button.
Wenn ich starte, ist der Keylistener aktiv und reagiert auf Tastenanschläge. Wenn nun aber der Button oder das Textfeld geklickt wird, kann ich das erste Panel nicht wieder aktivieren.
Ich suche nach einer Möglichkeit den Keylistener wieder per Klick auf einen Button, oder in das richtige Panel wieder aktiv zu schalten, oder durchgehend aktiv zu halten.

Hier der JFrame in dem alles drinnen ist.

Code:
public class GameWindow extends JFrame {

	private String title;
	private final int breite, hoehe;
	private Dimension dim;
	private GamePanel panel;
	JButton button;
	JTextField eingabe;
	JPanel panel2;

	public GameWindow(String title, int breite, int hoehe) {

		super(title);
		this.breite = breite;
		this.hoehe = hoehe;
		this.title = title;
		dim = new Dimension(breite, hoehe);

		setMaximumSize(dim);
		setMinimumSize(dim);
		setPreferredSize(dim);
		setAlwaysOnTop(true);
		setResizable(false);
		setLocationRelativeTo(null);
		setLayout(null);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		panel2 = new JPanel();
		panel2.setLayout(null);
		panel2.setBounds(10, 400, 600, 80);
		add(panel2);

		Font schrift = new Font("Serif", Font.BOLD, 15);
		Icon x = new ImageIcon(getClass().getResource("raster.png"));
		
		 button = new JButton("Hallo Welt");
		 button.setBounds(0, 0, 150, 50);
		 button.setFont(schrift);
		 button.addActionListener(new ButtonListener());
		 button.setToolTipText("Schreibt den Text aus der Checkbox in diesen Button.");
		 panel2.add(button);

		eingabe = new JTextField();
		eingabe.setBounds(160, 0, 200, 50);
		eingabe.setFont(schrift);
		eingabe.addCaretListener(new ButtonListener());

		panel2.add(eingabe);

		 panel = new GamePanel();
		 panel.setBackground(Color.GRAY);
		 panel.setBounds(0, 0, 600, 395);
		 panel.setFocusable(true);
		 add(panel);
		 
		 JPanel panel3 = new JPanel();
		 panel3.setBounds(0, 0, 600, 395);
		 JLabel picture = new JLabel(x);
		 picture.setBackground(Color.BLUE);
		 picture.setBounds(0, 0, 600, 395);
		 panel3.add(picture);
		 panel.add(panel3);

		setVisible(true);
	}

	private class ButtonListener implements ActionListener, CaretListener {

		@Override
		public void actionPerformed(ActionEvent e) {
			button.setText(eingabe.getText());
		}

		@Override
		public void caretUpdate(CaretEvent e) {
		}
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public int getBreite() {
		return breite;
	}

	public int getHoehe() {
		return hoehe;
	}

}

Wäre echt geil, wenn mir da jemand helfen könnte.
(ist für ein kleines Spiel was ich versuche mit ein paar Freunden zu programmieren)
 
G

Gast2

Gast
Damit ein KeyListener reagiert muss die Komponente den Fokus haben. Den Fokus immer wieder zurückzusetzen ist nicht so schön, arbeite da lieber mit KeyBindings/InputMap.
 

Michael...

Top Contributor
Damit ein KeyListener reagiert muss die Komponente den Fokus besitzten. Jemand oder etwas müsste also requestFocus() auf der Komponente aufrufen, z.B. per Mausklick auf die Komponente.
Vermutlich wäre für diesen Fall Key Bindings besser geeignet als ein KeyListener.
Abgesehen davon ist in den Code nichts von einem KeyListener zu sehen.
 

AtlanTK

Mitglied
Damit ein KeyListener reagiert muss die Komponente den Fokus besitzten. Jemand oder etwas müsste also requestFocus() auf der Komponente aufrufen, z.B. per Mausklick auf die Komponente.
Vermutlich wäre für diesen Fall Key Bindings besser geeignet als ein KeyListener.
Abgesehen davon ist in den Code nichts von einem KeyListener zu sehen.

Der wird in panel auf selbiges geschrieben.
 

AtlanTK

Mitglied
Hi
ich habe jetzt einen inputMap Eintrag erstellt, auf meinem panel.
Leider werden bei fokusieren einer anderen JComponent die events nicht mehr aufgerufen.
Code:
panel.getInputMap().put(KeyStroke.getKeyStroke("RIGHT"), "right");
	panel.getActionMap().put("right", new AbstractAction() {
		public void actionPerformed(ActionEvent e) {
			System.out.println("left");
			panel.getMoveEntityThread().keyPressed("x", 1);
		}
	}
);

Um die actions immer auf zu rufen, müsste ich jetzt alle anderen richtungs-events mit none überschreiben, oder?

Code:
panel2.getInputMap().put(KeyStroke.getKeyStroke("DOWN"), "none");
panel2.getInputMap().put(KeyStroke.getKeyStroke("UP"), "none");
panel2.getInputMap().put(KeyStroke.getKeyStroke("LEFT"), "none");
panel2.getInputMap().put(KeyStroke.getKeyStroke("RIGHT"), "none");
Habe es so versucht: geht auch nicht.
 
Zuletzt bearbeitet:

Michael...

Top Contributor
Zunächst mal ein Hinweis: Gib den Variablen sprechende Namen, vor allem wenn es sich um "bedeutende" Variablen handelt: panel ==> gamePanel
Hi
ich habe jetzt einen inputMap Eintrag erstellt, auf meinem panel.
Leider werden bei fokusieren einer anderen JComponent die events nicht mehr aufgerufen.
Eine Komponente besitzt verschiedene InputMaps, für Dich Interessant:
Code:
panel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
Das ja auch reagiert werden soll, wenn die Komponente nicht den Fokus hat.

Um die actions immer auf zu rufen, müsste ich jetzt alle anderen richtungs-events mit none überschreiben, oder?

Code:
panel2.getInputMap().put(KeyStroke.getKeyStroke("DOWN"), "none");
panel2.getInputMap().put(KeyStroke.getKeyStroke("UP"), "none");
panel2.getInputMap().put(KeyStroke.getKeyStroke("LEFT"), "none");
panel2.getInputMap().put(KeyStroke.getKeyStroke("RIGHT"), "none");
Habe es so versucht: geht auch nicht.
Ist ja auch Schmarrn, bei einem Panel sind für diese KeyStroke ohnehin keine Aktionen in der InputMap enthalten.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D KeyListener nicht mehr aktiv nach ActionPerformed Java Basics - Anfänger-Themen 2
S KeyListener aktiv auch wenn minimiert? Java Basics - Anfänger-Themen 4
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
Z KeyListener funktioniert nicht? Weshalb? Java Basics - Anfänger-Themen 8
T KeyListener Java Basics - Anfänger-Themen 2
Gfreak23 Input/Output KeyListener funktioniert auf Laptop nicht allerdings auf Tower-PC Java Basics - Anfänger-Themen 8
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
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
K Input/Output KeyListener funktioniert nicht Java Basics - Anfänger-Themen 3
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
Maxim6394 KeyListener funktioniert nicht Java Basics - Anfänger-Themen 20
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
J KeyListener (keyTyped) funktioniert nicht Java Basics - Anfänger-Themen 9
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
O KeyListener funktioniert nur wenn er will Java Basics - Anfänger-Themen 2
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
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
Das Brot Nach .add(JRadioButton) funktioniert der KeyListener nicht mehr 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
U ActionListener und KeyListener - KeyListener funktioniert nicht Java Basics - Anfänger-Themen 2
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
M TabbedPane: KeyListener funktioniert nicht mehr Java Basics - Anfänger-Themen 8
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
H KeyListener funktioniert nicht Java Basics - Anfänger-Themen 8
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
A KeyListener funktioniert nicht Java Basics - Anfänger-Themen 7
D KeyListener Java Basics - Anfänger-Themen 7
B Keylistener auf JSpinner reagiert nicht? Java Basics - Anfänger-Themen 3
G KeyListener für die Taste "/" Java Basics - Anfänger-Themen 5
E brauche hilfe beim KeyListener Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben