Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
InterfaceKlasse Frame (extends JFrame) aus anderer Klasse schließen
package Start;
import javax.swing.*;
public class Start_Frame extends JFrame {
private static final long serialVersionUID = 1L;
public static Start_Panel panel;
public Start_Frame() {
panel = new Start_Panel();
setSize(1100,820);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(null);
setLocationRelativeTo(null);
setResizable(false);
setFocusable(true);
add(panel);
new Start_Timer(panel);
setVisible(true);
}
}
Dieses Fenster ist quasi der Lade- bzw. Startbildschirm, in dem eine kleine Animation abläuft.
Wenn diese jedoch vorbei ist, soll dieses Fenster (aus einer anderen Klasse) geschlossen werden, weil ein neues geöffnet wird. Ich bin nur leider nicht sonderlich schlau geworden, wie das geht. Ich dachte jetzt an etwas wie
Java:
Start_Frame.frame.setVisible(false);
sowas gibt es aber nicht - oder ich habe es nur nicht gefunden. Ich würde mich freuen, wenn mir jemand sagen könnte, wie das geht.
Das würde vlt. auch gehen, dann stellt sich mir nur wieder die Frage, wie änder ich das Panel von einer anderen Klasse aus? PS: Mich würde trotzdem interessieren, wie man das Fenster schließt
Ja ok das würde vlt auch gehen, da stellt sich mir nur die Frage wie ändere ich das Panel? Und PS: Es würde mich trotzdem interessieren, wie man das Fenster schließt.
Das Fenster schließen kannst du mit JFrame#dispose()
Naja indem du eine Methode zum ändern des Panels machst und dann diese Methode aus der anderen Klasse aufrufst
Java:
public class ClassA {
private ClassB bInstance;
public ClassA() {
this.bInstance = new ClassB(this);
}
public void switchToPanelA() {
/// switch to panel A
}
public void switchToPanelB() {
/// switch to panel B
}
}
public class ClassB {
private ClassA aInstance;
public Classb(ClassA aInstance) {
this.aInstance = aInstance;
aInstance.switchToPanelB();
}
}
Mein Problem mit dem dispose ist eher wo kriege ich das "JFrame" her, ich habe dafür da ja keine Variable. Muss ich mir da einen anlegen oder geht das auch so?
Dein Start_Frame ist dein JFrame .. du müsstest also - wie oben in dem Beispiel - das aktuelle Objekt (this) an die aufrufende Klasse übergeben und kannst darüber alle Methoden eines JFrames aufrufen.
BTW: Es ist schlechter Stil von JFrame zu erben, wenn man es nur benutzen will und nicht um Funktionalität erweitert.
@UnknownInnocent Bitte Java Konventionen für die Benennung von Bezeichnern einhalten: Namen von Paketen, Variablen, Parametern und Methoden in lowerCamelCase, Namen von Typen wie Klassen, Interfaces etc. in UpperCamelCase.