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:
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 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 Keks