Hallo zusammen
Ich habe eine kleine Window-Klasse erstellt, welche über eine Methode verfügt um den ContentPane sprich das JPanel zu wechseln welche folgendermassen aussieht:
Weiter wird der Klasse bereits bei der Instanzierung ein JPanel übergeben, damit man nicht schon beim ersten Mal die Methode
aufrufen muss. Das funktioniert soweit auch ganz gut.
Nun habe ich zwei weitere Klassen mit der Bezeichnung MyMenu und MyGameController. Beide erweiteren die Klasse JPanel. Im Gegensatz zu der Klasse MyMenu implementiert die Klasse MyGameController noch einen KeyListener und ruft im Konstruktor folgende Zeile auf damit der KeyListener überhaupt reagiert:
In der Main-Methode des Projekts wird nun eine neue Window-Klasse instanziert und die Klasse MyMenu übergeben, welche ein eigenes Event besitzt. Wird dieses Event ausgelöst wird das aktuelle Panel in der Window-Klasse über die Zeile
geändert.
Der Wechsel des Panels funktioniert wie bereits erwähnt ganz gut, nur dass nach einem Wechsel die KeyListener-Funktion der Klasse MyGameController nicht mehr funktioniert.
Übergebe ich die Klass MyGameController der Window-Klasse aber direkt bei der Instanzierung, so funktioniert der KeyListener.
Für mich ist das an dieser Stelle unlogisch, da ich beim Konstruktor der Window-Klasse ja auch nichts anderes mache als lediglich den ContentPane zu setzen:
Ich hoffe Ihr könnt mir mit dieser Beschreibung weiterhelfen, ansonsten einfach nachfragen
.
LG Samuel
Ich habe eine kleine Window-Klasse erstellt, welche über eine Methode verfügt um den ContentPane sprich das JPanel zu wechseln welche folgendermassen aussieht:
Java:
public void setContentPane(Container panel){
getContentPane().removeAll();
getContentPane().add(panel);
invalidate();
validate();
}
Weiter wird der Klasse bereits bei der Instanzierung ein JPanel übergeben, damit man nicht schon beim ersten Mal die Methode
Java:
setContentPane(...)
Nun habe ich zwei weitere Klassen mit der Bezeichnung MyMenu und MyGameController. Beide erweiteren die Klasse JPanel. Im Gegensatz zu der Klasse MyMenu implementiert die Klasse MyGameController noch einen KeyListener und ruft im Konstruktor folgende Zeile auf damit der KeyListener überhaupt reagiert:
Java:
this.setFocusable(true);
In der Main-Methode des Projekts wird nun eine neue Window-Klasse instanziert und die Klasse MyMenu übergeben, welche ein eigenes Event besitzt. Wird dieses Event ausgelöst wird das aktuelle Panel in der Window-Klasse über die Zeile
Java:
setContentPane(new MyGameController());
Der Wechsel des Panels funktioniert wie bereits erwähnt ganz gut, nur dass nach einem Wechsel die KeyListener-Funktion der Klasse MyGameController nicht mehr funktioniert.
Übergebe ich die Klass MyGameController der Window-Klasse aber direkt bei der Instanzierung, so funktioniert der KeyListener.
Für mich ist das an dieser Stelle unlogisch, da ich beim Konstruktor der Window-Klasse ja auch nichts anderes mache als lediglich den ContentPane zu setzen:
Java:
public Window(String title, Container panel){
super(title);
getContentPane().add(panel);
...
setVisible(true);
Ich hoffe Ihr könnt mir mit dieser Beschreibung weiterhelfen, ansonsten einfach nachfragen
LG Samuel
Zuletzt bearbeitet von einem Moderator: