Swing KeyBinding: Action wird nicht ausgelöst

koni1996

Mitglied
Guten Abend zusammen,

ich versuche gerade mittels KeyBinding zu bewirken, dass man ein Programm z.B. mit der Esc-Taste beenden kann.

Ich habe folgende Klasse, die von JPanel erbt und die einem Window-Objekt (diese Klasse erbt von JFrame) hinzugefügt wird:

Java:
//...

public class GamePanel extends JPanel
{
	//...
        private Window window;
	
	public GamePanel(Window w)
	{
		//...
                window = w;
		
		setSize(window.getContentPane().getSize());
		setLocation(0, 0);
		setLayout(null);

		Action escapeAction = new AbstractAction() 
		{
		    public void actionPerformed(ActionEvent e) 
		    {
		    	  System.exit(0);
		    }
		};
		
		getInputMap(WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("ESCAPE"), "escapeAction");
		getActionMap().put("escapeAction", escapeAction);
        
                //...
	}
}
Leider passiert gar nichts, wenn ich die Esc-Taste drücke.

Vielen Dank schon mal für eure Hilfe!
 

Dumdidum

Mitglied
Besteht dein Problem denn noch?

Ich habe zwar bis jetzt noch nie damit gearbeitet aber in einer kleinen Testklasse hat dein Code (ohne alles unnötige ;) ) bei mir wunderbar funktioniert.

Aus deinem Code ist leider nicht zu erkennen, ob du dein GamePanel auch wirklich irgendwann dem Frame (bzw in deinem Fall dem Window) hinzufügst!? Weil wenn du es nicht hinzufügst, dann kann es natürlich auch nicht auf die ESC Taste reagieren...

also hast du da irgendwo ein
Java:
w.add(this);

bzw. warum übergibst du dem Panel überhaupt das Frame!?
 

koni1996

Mitglied
Ja, das Problem besteht immer noch.

Das JFrame wird den JPanels übergeben, weil diese teilweise setter-Methoden des JFrames aufrufen müssen.

Ich habe mittlerweile herausgefunden, dass das Problem irgendwo beim Wechseln zwischen zwei JPanels liegt (ich weiß, dass man das auch mit einem CardLayout lösen kann, das will ich aber nicht unbedingt).

Ich habe meine JFrame-Klasse F, die so aussieht:

Java:
//...

public class F extends JFrame
{
	//...
        private P1 p1;
	
	public F()
	{
		//...
                setSize(800, 600);
		setResizable(false);
		setLocationRelativeTo(getParent());
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setLayout(null);
		setVisible(true);
		
		//...
		
		p1 = new P1(this);
		
		add(p1);
		
		repaint();
	}

        //...
}

Dieser wird ein Objekt der JPanel-Klasse P1 hinzugefügt, die so aussieht:

Java:
//...

public class P1 extends JPanel implements ActionListener
{
	private F f;
	private P2 p2;
	
	public P1(F fNeu)
	{
		f = fNeu;
		
		setSize(f.getContentPane().getSize());
		setLocation(0, 0);
		setLayout(null);
		
		//...
	}
	
	//...

	@Override
	public void actionPerformed(ActionEvent e) 
	{
		//...
		else if(e.getSource().equals(...))
		{
			f.remove(this);
			
			p2 = new P2(f);
			
			f.add(p2);
			f.repaint();
		}
		//...
	}
}

Leider funktionieren bei diesem Code weder KeyBindings noch die Tastenkombination Alt+F4, sobald das Objekt der JPanel-Klasse P2 angezeigt wird.

Beides funktioniert allerdings, wenn man zwischendurch f.dispose() aufruft:

Java:
f.remove(this);
f.dispose();
f.setVisible(true);
			
p2 = new P2(f);
			
f.add(p2);
f.repaint();

Ich will allerdings natürlich nicht, dass das Fenster dauernd geschlossen wird.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Swing KeyBinding AWT, Swing, JavaFX & SWT 3
W SWT keybinding ESC bzw. [x] bei Shell (modal) AWT, Swing, JavaFX & SWT 2
M JavaFX Button action abhängigkeit von Tab AWT, Swing, JavaFX & SWT 1
B Probleme Action Listener Taschenrechner AWT, Swing, JavaFX & SWT 27
Z Befehl Action Event Verlassen AWT, Swing, JavaFX & SWT 4
J Action Listener Rückgabewert AWT, Swing, JavaFX & SWT 14
3 JComboBox - Action - Auslesen & Umwandeln AWT, Swing, JavaFX & SWT 9
J Java -8 Action Listener für mehrere Buttons AWT, Swing, JavaFX & SWT 9
S Action durchführen beim Programm beenden AWT, Swing, JavaFX & SWT 3
K Array von einer Action zur anderen bringen AWT, Swing, JavaFX & SWT 7
T action für Button übergeben - bitte um Segen AWT, Swing, JavaFX & SWT 1
F In Action Listener TextFields einlesen und prüfen. Abbruch bei falschen Eingaben. Wie mache ich das? AWT, Swing, JavaFX & SWT 2
G mehrere Action-Abfolgen erfassen AWT, Swing, JavaFX & SWT 6
I Button Action AWT, Swing, JavaFX & SWT 6
C Swing MenuItem feuert Action nur wenn disabled AWT, Swing, JavaFX & SWT 2
K Action Listener implementieren über Objekt AWT, Swing, JavaFX & SWT 14
H Problem mit dem Action listener.... AWT, Swing, JavaFX & SWT 2
J SWT Rechteck Füllfarbe wird bei Action falsch gefüll AWT, Swing, JavaFX & SWT 2
S Action Listener in innerer Klasse ausführen. AWT, Swing, JavaFX & SWT 8
D Drag-Action: Innerhalb meiner View? AWT, Swing, JavaFX & SWT 3
alex_fairytail Swing Textfeld Action wenn geschrieben wird? AWT, Swing, JavaFX & SWT 6
R innere Action -> auf äußeres this zugreifen AWT, Swing, JavaFX & SWT 3
L Action listener in bestimmter spalte AWT, Swing, JavaFX & SWT 2
P Action Event abfangen etwas anders? AWT, Swing, JavaFX & SWT 2
J AWT Action Listener etc. AWT, Swing, JavaFX & SWT 7
N Swing nach Fensterrand Action ausführen? HILFE AWT, Swing, JavaFX & SWT 7
L ComboBox in Action AWT, Swing, JavaFX & SWT 4
M SWT Jface Action und localised Strings AWT, Swing, JavaFX & SWT 6
I Button Action AWT, Swing, JavaFX & SWT 4
K GUI, Action AWT, Swing, JavaFX & SWT 4
B Frage zu Button-Action AWT, Swing, JavaFX & SWT 3
J Action before actionPerformed! AWT, Swing, JavaFX & SWT 4
S Combo Box action listener AWT, Swing, JavaFX & SWT 2
A Action listener von Button AWT, Swing, JavaFX & SWT 5
K Swing Wie ändere ich die default action für Drag&Drop AWT, Swing, JavaFX & SWT 6
M JButton Action Problem AWT, Swing, JavaFX & SWT 3
K Action.MNEMONIC mit char belegen. AWT, Swing, JavaFX & SWT 2
M Action.DISPLAYED_MNEMONIC_INDEX_KEY geht nicht mehr AWT, Swing, JavaFX & SWT 2
O Action Event auslösen bei unbekanntem JTextField AWT, Swing, JavaFX & SWT 3
G SWT ApplicationActionBarAdvisor Action AWT, Swing, JavaFX & SWT 11
G Action? AWT, Swing, JavaFX & SWT 2
0 (Action)Listener auslagern? AWT, Swing, JavaFX & SWT 9
K kleine frage zum Spinner (bezüglich Action) AWT, Swing, JavaFX & SWT 2
F Problem mit Action Listener in privater inneren Klasse AWT, Swing, JavaFX & SWT 6
S Action Handler JButton AWT, Swing, JavaFX & SWT 15
S Buttons werden nach action grau AWT, Swing, JavaFX & SWT 4
S Action mit 2 verschiednen texten AWT, Swing, JavaFX & SWT 2
A SWT: Action über Hotkey ausführen AWT, Swing, JavaFX & SWT 2
G Action.setCheck(boolean)? AWT, Swing, JavaFX & SWT 6
A Mit der Combobox eine Action auslösen AWT, Swing, JavaFX & SWT 2
X Action aktivieren AWT, Swing, JavaFX & SWT 2
J mehrere Action Buttons mit einer ActionListener Methode AWT, Swing, JavaFX & SWT 7
A Action Listener AWT, Swing, JavaFX & SWT 14
S JMenuBar mit Action belegen! AWT, Swing, JavaFX & SWT 5
R action performed und IOException AWT, Swing, JavaFX & SWT 4
F Wo kann ich eine Action einsetzen? AWT, Swing, JavaFX & SWT 2
F Action ausführen? AWT, Swing, JavaFX & SWT 3
G Action Listener erzeugen AWT, Swing, JavaFX & SWT 6
C tree action AWT, Swing, JavaFX & SWT 8
W Bei hinzufügen der Action verliert Button Text,Tooltip, etc AWT, Swing, JavaFX & SWT 5
B Problem mit Übergabe bei action in andere Klasse AWT, Swing, JavaFX & SWT 4
X Action und Frame AWT, Swing, JavaFX & SWT 3
K Jtree und Action Event AWT, Swing, JavaFX & SWT 6
P Methode wird nicht überprüft AWT, Swing, JavaFX & SWT 4
P paintComponent-Methode wird dauernd neu aufgerufen AWT, Swing, JavaFX & SWT 2
G JavaFX LineChart Datenpunkte Markierung wird abgeschnitten AWT, Swing, JavaFX & SWT 1
P JTextField wird nur sehr klein angezeigt und verändert die Größe nicht AWT, Swing, JavaFX & SWT 3
Telisti Javafx Image wird nicht richtig integiert AWT, Swing, JavaFX & SWT 8
J Netbeans die JavaFX-Anwendung wird nicht ausgeführt AWT, Swing, JavaFX & SWT 16
N €-Zeichen wird nicht akzeptiert AWT, Swing, JavaFX & SWT 4
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
L jComboBox Actionlistener wird beim erstmaligen Befüllen getriggert AWT, Swing, JavaFX & SWT 7
_user_q Objekt.setSelected(false), wenn es nicht mehr fokussiert wird AWT, Swing, JavaFX & SWT 2
S Javafx getResource-Pfad wird nicht erkannt AWT, Swing, JavaFX & SWT 7
U Warum wird zweimal die Affinetransformation estellt (2Dgraphics, Java)? AWT, Swing, JavaFX & SWT 31
DonBronson Gezeichnetes Objekt verschwindet nachdem erneut gezeichnet wird AWT, Swing, JavaFX & SWT 8
ProggersWorld JavaFX TextArea BackgroundImage wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
M Bild wird nicht geladen obwohl sie gefunden wird AWT, Swing, JavaFX & SWT 0
M Nach Export als Runnable Jar wird css nicht merh gefunden AWT, Swing, JavaFX & SWT 22
izoards Outlook Mail erstellen - Signatur wird nicht angezeigt. AWT, Swing, JavaFX & SWT 3
J actionperformed wird nicht aufgerufen/ repaint() AWT, Swing, JavaFX & SWT 6
J Swing Komponente wird unpassend angepasst in der Größe AWT, Swing, JavaFX & SWT 35
J Java FX NullPointerException, ObservableList wird in View nicht angezeigt.. AWT, Swing, JavaFX & SWT 34
S Next_Button wird nicht ausgeführt. AWT, Swing, JavaFX & SWT 6
FrittenFritze Ein Problem mit der CSSBox, die Größe wird nicht angepasst AWT, Swing, JavaFX & SWT 5
CptK windowClosed() nur aufrufen, wenn Fenster nicht über Button geschlossen wird AWT, Swing, JavaFX & SWT 1
J Komponente wird manchmal falsch gezeichnet AWT, Swing, JavaFX & SWT 0
J Swing JList wird nicht angezeigt AWT, Swing, JavaFX & SWT 6
JMölleri Swing Image wird unscharf dargestellt AWT, Swing, JavaFX & SWT 2
JojoSand Java Programm wird nicht gestartet - keinen Fehlerhinweis AWT, Swing, JavaFX & SWT 9
R Text vom Jlabel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
D JavaFX Bearbeitetes Bild wird nicht gespeichert AWT, Swing, JavaFX & SWT 9
J setOnCloseRequest wird nicht ausgelöst AWT, Swing, JavaFX & SWT 3
P JavaFX Fenster wird nicht angezeigt (Mac) AWT, Swing, JavaFX & SWT 13
B JavaFX Bei Scenen-Wechsel im primaryStage wird aktuelle Fenstergröße nicht mit übernommen AWT, Swing, JavaFX & SWT 16
B JavaFX Warum wird hier eine NullPointer-Exception geworfen? AWT, Swing, JavaFX & SWT 7
M JavaFX javaFX Label-Text wird nicht gesetzt AWT, Swing, JavaFX & SWT 3
O Swing "Eigenes" JPanel wird dem JScrollPane nicht hinzugefügt AWT, Swing, JavaFX & SWT 5
L Swing JLabel wird beim ändern der Schriftart immer neu gezeichnet. AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben