Guten Morgen!!
Ich habe folgendes Problem:
Ich möchte ein JPanel relativ zu einem anderen JPanel positionieren. Es besteht die Möglichkeit, dass das erste Panel zum entsprechendem Event noch nicht visible ist. In diesem Fall will ich dieses zeichnen lassen und in Abhängigkeit der Location mein zweites Panel positionieren. Das Problem ist, dass zwar die sequentielle Folge ausgeführt wird, aber scheinbar der Zeichenprozess nicht abgeschlossen wurde, sodass die Location zum Aufruf der Anzeige sich noch nicht geändert hat.
Bsp:
Hier wird die childTable im Falle, dass sie nicht on screen ist, zum repaint angeregt. Zum Zeitpunkt der Darstellung der detailsTable ist die Location jedoch nicht aktualisiert und die Relativposition passt nicht.
Im Moment habe ich es mit einem Workaround gelöst, der mir aber nicht so recht gefällt.
Einen ähnlichen Fall hatte ich auch bei dem Aktualisieren einer Liste beobachtet. Da wurde diese nicht sortiert, obwohl bereits Daten hineingeschrieben worden sind. Dabei wurde dieser jedoch nicht vom Main GUI Thread ausgeführt.
Herzlichen Dank für eure Hilfe.
Ich habe folgendes Problem:
Ich möchte ein JPanel relativ zu einem anderen JPanel positionieren. Es besteht die Möglichkeit, dass das erste Panel zum entsprechendem Event noch nicht visible ist. In diesem Fall will ich dieses zeichnen lassen und in Abhängigkeit der Location mein zweites Panel positionieren. Das Problem ist, dass zwar die sequentielle Folge ausgeführt wird, aber scheinbar der Zeichenprozess nicht abgeschlossen wurde, sodass die Location zum Aufruf der Anzeige sich noch nicht geändert hat.
Bsp:
Java:
if (!childTable.isVisible()) {
JMain.getInstance().getLeaderBoard().setShow(this);
}
JMain.getInstance().showDetails(this, detailsTable);
Hier wird die childTable im Falle, dass sie nicht on screen ist, zum repaint angeregt. Zum Zeitpunkt der Darstellung der detailsTable ist die Location jedoch nicht aktualisiert und die Relativposition passt nicht.
Im Moment habe ich es mit einem Workaround gelöst, der mir aber nicht so recht gefällt.
Java:
if (!childTable.isVisible()) {
JMain.getInstance().getLeaderBoard().setShow(this);
final Integer loc = this.getLocation().y;
final EntryContainer c = this;
JMain.getInstance().executeTask(new Runnable() {
@Override
public void run() {
while (loc == c.getLocation().y) {
// wait
}
JMain.getInstance().showDetails(c, detailsTable);
}
}, "Show Details");
} else {
JMain.getInstance().showDetails(this, detailsTable);
}
Einen ähnlichen Fall hatte ich auch bei dem Aktualisieren einer Liste beobachtet. Da wurde diese nicht sortiert, obwohl bereits Daten hineingeschrieben worden sind. Dabei wurde dieser jedoch nicht vom Main GUI Thread ausgeführt.
Herzlichen Dank für eure Hilfe.