Frage von Robinson97, 40

Neue Frame aufrufen und ausführen?

Ich habe gerade folgendes Problem in Java: Ich möchte für mein Pong Spiel einen Startbildschirm erstellen und sobald man dabei auf den Start Button klickt soll das Spiel ausgeführt werden. Das Problem ist, das die Frame des Spiels zwar geöffnet und angezeigt wird, aber das Spiel nicht startet, dass liegt daran, das die public static void main(String[] args){ } nicht ausgeführt wird...

Wie kann ich diese aus der Startframe heraus starten ?

Startframe:

public void lab_multi_ActionPerformed(ActionEvent evt) {
    this.setVisible(false);
    ping pong = new ping("Pong");
    pong.setVisible(true);
  } 

Game (public static void main(String[] args)):

public static void main(String[] args) {
new ping("ping");
start_game(); }
Expertenantwort
von KnusperPudding, Community-Experte für Java, 5

Bitte poste deinen gesamten Code. Sinnvollerweise mit Pastebin.com oder pastie.org oder ähnlichem, sodass man sich das anschauen kann ohne selbst alles zu 'erraten'.

PS: Muffins Antwort solltest du wirklich beherzigen.

Antwort
von DasesColles, 28

Hey hab gerade das ganze ausprobiert. Habe mir zwei JFrames erstellt(Startframe, Gameframe). Ich kann das Gameframe über das Startframe erzeugen indem ich schreibe:

Gameframe gf = new Gameframw();
gf.setVisible(true);

Hier funktioniert das einwand frei?
Mit welcher IDE codest du denn?

Kommentar von DasesColles ,

Gnaz vergessen zu schreiben: auch die main methode wird hier problemlos ausgeführt

Kommentar von Robinson97 ,

Momentan noch mit dem JavaEditor...Leider :(

Wollte eigentlich auf Eclipse umsteigen, nur der hat Probleme meine Bilder zu finden, obwohl der Pfad stimmt

Kommentar von DasesColles ,

Empfehlen würde ich NetBeans

Kommentar von DasesColles ,

Gerade nochmal nachgeschaut. Meine IDE fügt automatisch den start der main methode ein. Schreib einfach in den konstruktor des Gameframes main(null); und lösche falls vorhanden die eventqueue in der main Methode

Kommentar von Robinson97 ,

Wenn ich main null benutze passiert folgendes:

Exception in thread "main" java.lang.StackOverflowError

Falls du mit eventqueue das String[] args meinst hat das löschen leider auch nichts geholfen...

Kommentar von Robinson97 ,

Ok, ich habs mal in Eclipse probiert. Das Problem hierbei ist, er startet das Spiel noch nicht einmal, wenn ich nur diese Klasse ausführe. Im Javaeditor hat es funktioniert...

Kommentar von PerfectMuffin ,

Wenn irgendetwas im Java-Editor funktioniert, was in Eclipse nicht funktioniert, dann verwendest du Eclipse nicht richtig.

Kommentar von Robinson97 ,

Wie soll ich es denn nicht richtig verwenden, obwohl ich genau den selben Quellcode verwende ?

An genau einer Stelle im Programm macht der Javaeditor Compiler was anderes, als der Eclipse Compiler, bei der Funktion Countdown:

public static boolean countdown(){
int delay = 1000;
int period = 1000;
timer = new Timer();
interval = 4;

timer.scheduleAtFixedRate(new TimerTask() {
int number=0;

public void run() {
number=setInterval();

if(number==0) {
start=true;
countdown.setText("Start");
timer.cancel();
} else {
countdown.setText(""+number);
//System.out.println(number);
}

}
}, delay, period);
return start;
}

macht der Eclipse compiler kein return true von der Variable start, während der Javaeditor nach ablauf des Countdowns ein return true zurück liefert...

Main

start = countdown();

Der Quellcode funktioniert einwandfrei im Javaeditor

Kommentar von Star4Fun ,

Empfehlen würde ich Eclipse

Kommentar von DasesColles ,

Da scheiden sich die Geister wohl

Keine passende Antwort gefunden?

Fragen Sie die Community