JVM Bug oder Denkfehler?

Cymatoxa

Mitglied
Hallo,

ich habe gerade an einem kleinen Programm geschrieben. Es geht dabei um ein Frame, welches verädert (vergößert, um genau zu sein) werden soll, sobald es sichtbar ist. Dazu wird einfach ein Thread gestartet, der ununterbrochen überprüt, ob das Frame schon sichtbar ist. Hier erstmal der vereinfachte Code:
Java:
public class Test {

    static final JFrame frame;
    
    static {
        frame = new JFrame("Hallo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);
        frame.setLocationRelativeTo(null);
        setSize(300, 200);
    }
    
    public static void main(String[] args) {
        frame.setVisible(true);
    }
    
    private static void setSize(final int width, final int height) {
        if (frame.isVisible()) {
            frame.setSize(width, height);
            frame.setLocationRelativeTo(null);
        } else {
            new Thread(){
                public void run() {
                    // Hier ist jetzt die Abfrage...
                    while (!frame.isVisible()) {
                        // Leere Schleife, die verlassen werden soll,
                        // sobald das Frame sichtbar ist.
                    }
                    setSize(width, height);
                }
            }.start();
        }
    }
}
Der Code funktioniert jedoch nicht, das Frame hat die Größe 0x0. Wenn ich jetzt aber in die Schleife die Funktion
Java:
System.out.println();
schribe, dann funktioniert es einwandfrei! Hab ich da jetzt echt einen verrückten Denkfehler oder liegt das an Java? Vielleicht habt ihr ja eine Idee...

Grüße Cymatoxa
 
Zuletzt bearbeitet:
Hi,

Ich habe das Programm bei mir getestet und es funktioniert ohne das ich System.out.println() schreiben musste.

Gruß
G1n0
 
Zuletzt bearbeitet:
Nein, nein.
Das Fenster soll duch frame.setSize(300, 200); auf die entsprechende Größe gebracht werden.
Mich interessiert vor allem, wie es kommt, dass der Befehl System.out.println(); innerhalb meiner Schleife dafür sorgt, dass das auch geschieht, sobald frame.setVisible(true); aufgerufen wurde. Wie ich dieses "Problem" umgehen kann ist mir weniger wichtig - dafür habe ich bereits genug Ansätze.

Grüße, Cymatoxa

EDIT: Funktioniert das Programm bei euch auch mit leerer Schleife?
 
Hi,

hab auch schon mein Beitrag geändert. Ich habe dich erstmal falsch verstanden sry :)
Ja, es funktioniert bei mir auch mit einer leeren Schleife

Gruß
G1n0
 
verrück... danke, werde mal meine Java Version aktuallisieren

Grüße,
Cymatoxa

Echt seltsam... Auch mit der aktuellen Java Version hab ich mit leerer Schleife nur ein winziges JFrame. Kann das an NetBeans liegen? Wohl kaum, oder?

Grüße Cymatoxa
 
Zuletzt bearbeitet von einem Moderator:
Guten Abend.

Ok habs mal bei mir getestet und auch bei mir funktionierts danach...
Die Lösung würde mich jetzt wirklich mal interessieren!

Gruß Mirar
 
Zuletzt bearbeitet:
Hi,

kann man auf der seite irgendwie ein Bild hochladen****?
Ich habe ein screenshot gemacht und würde es dir gerne zeigen...
Bei mir klappt es ohne das System.out.println();

Gruß
G1n0
 
Zurück