Ich habe folgenden Quelltext, der nicht viel anderes macht als einen kleinen Frame anzeigen und wenn man auf das rote X klickt, dann wird das ganze versteckt.
Die Methode public void setVisible(…) steht zwar im Quelltext wird aber nicht aufgerufen (also auch nicht von außerhalb).
Wenn ich jetzt auf das rote X drücke erhalte ich einen java.lang.StackOverflowError allerdings ohne Stacktrace oder sowas mehr als das steht einfach nicht auf meiner Konsole.
Und der Grund warum ich jetzt vom glauben an Java abrücke (ich dachte ich habe Java so ein bisschen verstanden) wenn ich diese Methode entferne dann funktioniert das ohne Fehler.
Und wenn ich die Methode von Public auf Private setze, dann bekomme ich einen CompilerFehler (Cannot reduce the visibility of the inherited method from Component)
so ein bisschen verstehe ich ja, dass ich das nicht so auf invisible setzten kann, aber warum verhält sich Java da so komisch…? Vorallem: Warum bringt er kein Stacktrace und warum ist spielt die Methode überhaupt eine Rolle wenn sie doch gar nicht aufgerufen wird…?
public class CopyOfFrame extends JFrame{
private static CopyOfFrame instance;
private CopyOfFrame() {
this.setTitle("Menütitel");
this.setDefaultCloseOperation(JFrame.HIDE\_ON\_CLOSE);
this.pack();
this.show();
}
public static CopyOfFrame getInstance() {
if (instance == null) {
synchronized(StartSeite.class) {
instance = new CopyOfFrame();
}
}
return instance;
}
public void setVisible(boolean visible) {
this.setVisible(visible);
}
}