huhu,
ich hab ein kleines Problem mit dem Focus.
Ich habe ein kleines Spielchen programmiert welches man mit den Pfeiltasten (KeyListener) gesteuert wird. Dieses Spiel läuft in einem JFrame ab. Diesem JFrame ist auch der KeyListener geadded.
Jetzt wollte ich noch ein kleines Menü schreiben indem man ein paar Einstellungen machen kann und das Level auswählen kann (ein extra JFrame mit einer JCombobox und einigen Buttons).
Das ganze soll so funktionieren:
Wenn das Programm gestartet wird öffnet sich das kleine Fenster für die Einstellungen. Sind alle Einstellungen gemacht drückt der Spieler einen "start" Button in diesem Fenster. Das kleine Fenster soll sich schliessen und das große Fenster in dem das Spiel abläuft soll sichtbar werden. Ist das Spiel zuende soll sich das große Fenster wieder schliessen und das kleine Fenster wieder sichtbar werden.
sobalt ich nun "start" drücke öffnet sich zwar das große Fenster. Aber der KeyListener funktioniert nicht. Nach ein bisschen suchen bin ich dazu gekommen das es wohl daran liegt das der JFrame des großen Fensters kein Focus hat.
Ich habe es jetzt mit requestFocus() probiert, allerdings ohne Erfolg. Wenn ich mir danach isFocused() ausgeben lasse kriege ich immernoch false als Ergebnis.
Wie kriege ich den Focus auf dieses Fenster? :?:
Der ActionListener in meinem kleinen Fenster:
Im Konstruktor meiner Game Klasse steht folgendes:
/e:
Um eventuelle Verwirrung zu beseitigen: frame heißt mein JFrame in dem kleinen Fenster und der JFrame in dem großen Fenster. Es sind also beides nicht die selben JFrames.
ich hab ein kleines Problem mit dem Focus.
Ich habe ein kleines Spielchen programmiert welches man mit den Pfeiltasten (KeyListener) gesteuert wird. Dieses Spiel läuft in einem JFrame ab. Diesem JFrame ist auch der KeyListener geadded.
Jetzt wollte ich noch ein kleines Menü schreiben indem man ein paar Einstellungen machen kann und das Level auswählen kann (ein extra JFrame mit einer JCombobox und einigen Buttons).
Das ganze soll so funktionieren:
Wenn das Programm gestartet wird öffnet sich das kleine Fenster für die Einstellungen. Sind alle Einstellungen gemacht drückt der Spieler einen "start" Button in diesem Fenster. Das kleine Fenster soll sich schliessen und das große Fenster in dem das Spiel abläuft soll sichtbar werden. Ist das Spiel zuende soll sich das große Fenster wieder schliessen und das kleine Fenster wieder sichtbar werden.
sobalt ich nun "start" drücke öffnet sich zwar das große Fenster. Aber der KeyListener funktioniert nicht. Nach ein bisschen suchen bin ich dazu gekommen das es wohl daran liegt das der JFrame des großen Fensters kein Focus hat.
Ich habe es jetzt mit requestFocus() probiert, allerdings ohne Erfolg. Wenn ich mir danach isFocused() ausgeben lasse kriege ich immernoch false als Ergebnis.
Wie kriege ich den Focus auf dieses Fenster? :?:
Der ActionListener in meinem kleinen Fenster:
Code:
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand() == "Start") {
frame.setVisible(false);
game = new Game();
frame.setVisible(true);
}
.....
}
Im Konstruktor meiner Game Klasse steht folgendes:
Code:
Game() {
frame = new JFrame(":)");
frame.setBounds(100,100,SIZE_X,SIZE_Y);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setFocusable(true);
frame.requestFocus();
frame.addKeyListener(new GameKeyListener(background));
frame.setVisible(true);
....
}
/e:
Um eventuelle Verwirrung zu beseitigen: frame heißt mein JFrame in dem kleinen Fenster und der JFrame in dem großen Fenster. Es sind also beides nicht die selben JFrames.