Hallo,
Prinzipiell möchte ich nur wissen auf welche Komponente ich bei einem Thread den Keylistener setzten muss. Das ist das einzigste, was nicht funktioniert: der KeyListener liegt im Hauptfenster auf nem JFrame, wenn ich nun ein neuen Thread eröffne, wird der KeyListener aber nicht mehr ausgelöst...
/*Ursprüngliche Nachricht*/
Hallo liebes java forum,
ich habe ein Problem mit der Ausführung eines kleinen Spieles und ich habe absolut keine Ahnung wie ich es nennen soll oder wie es lösbar ist (deswegen auch der nichtssagende Name dieses Themas, sorry)
Es funktioniert soweit. Ich habe nun mit einem Menu begonnen: Auf Buttonklick soll es gestartet werden. Dann wird ein Schleife gestartet , die solange läuft, bis das Spiel zu Ende ist. Wie gesagt das Spiel läuft komplett, das Problem besteht nun darin, dass alles innerhalb des ActionEvents abläuft... Folglich bleibt der Button das ganze Spiel lang gedrückt und da das Menupanel über dem Spielpanel liegt, sieht man das Spiel nicht (das Menupanel wird, weil alles im ActionEvent geschieht nicht unsichtbar gemacht)
Zum verdeutlichen:
[Hauptfenster]
[Menupanel und Spielpanel (übereinander, werden je nach Bedarf sichtbar, unsichtbar)]
[/Hauptfenster]
Ich habe das Spiel selbst Probeweise schoneinmal in einem extra Thread laufen lassen, wo dann allerdings nicht die KeyEvents ausgelöst wurden (KeyListener ist im Hauptfenster implementiert).
Hat jemand eine Idee, wie das Problem zu lösen ist?
Hauptfenster
und in Game (gm)
Prinzipiell möchte ich nur wissen auf welche Komponente ich bei einem Thread den Keylistener setzten muss. Das ist das einzigste, was nicht funktioniert: der KeyListener liegt im Hauptfenster auf nem JFrame, wenn ich nun ein neuen Thread eröffne, wird der KeyListener aber nicht mehr ausgelöst...
/*Ursprüngliche Nachricht*/
Hallo liebes java forum,
ich habe ein Problem mit der Ausführung eines kleinen Spieles und ich habe absolut keine Ahnung wie ich es nennen soll oder wie es lösbar ist (deswegen auch der nichtssagende Name dieses Themas, sorry)
Es funktioniert soweit. Ich habe nun mit einem Menu begonnen: Auf Buttonklick soll es gestartet werden. Dann wird ein Schleife gestartet , die solange läuft, bis das Spiel zu Ende ist. Wie gesagt das Spiel läuft komplett, das Problem besteht nun darin, dass alles innerhalb des ActionEvents abläuft... Folglich bleibt der Button das ganze Spiel lang gedrückt und da das Menupanel über dem Spielpanel liegt, sieht man das Spiel nicht (das Menupanel wird, weil alles im ActionEvent geschieht nicht unsichtbar gemacht)
Zum verdeutlichen:
[Hauptfenster]
[Menupanel und Spielpanel (übereinander, werden je nach Bedarf sichtbar, unsichtbar)]
[/Hauptfenster]
Ich habe das Spiel selbst Probeweise schoneinmal in einem extra Thread laufen lassen, wo dann allerdings nicht die KeyEvents ausgelöst wurden (KeyListener ist im Hauptfenster implementiert).
Hat jemand eine Idee, wie das Problem zu lösen ist?
Hauptfenster
Java:
public pane(){
win.setUndecorated(true);
win.setExtendedState(JFrame.MAXIMIZED_BOTH);
win.setLayout(null);
win.addKeyListener(this);
/*SPIELFLÄCHE (paintingSpace)*/
/*SPIELFLÄCHE ENDE*/
/*GAMEMENU*/
/*GAMEMENU ENDE*/
win.add(gamemenu);
win.add(paintingSpace);
win.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("Spielen") || e.getActionCommand().equals("Erneut Spielen")){
gamemenu.setVisible(false);
gm.pointReset();
gm.reset(paintingSpace);
gm.drawStart(paintingSpace);
gm.startGame(paintingSpace);
}else if(e.getActionCommand().equals("Nächste Runde")){
...
}else if(e.getActionCommand().equals("Beenden")){
System.exit(0);
}
}
}
und in Game (gm)
Java:
public void startGame(PaintingSpace ps){
ps.startCountdown();
while(speed > 0){
...
}
Zuletzt bearbeitet: