Hey, folgendes Szenario:
Ich habe einen JDialog, der als Komponente ein JPanel hält. Ausserdem hat er einen MouseListener. In der mouseExited() wird eine Methode rollOut() aufgerufen:
Allerdings passiert das nicht. Wenn ich per sysout prüfe, sehe ich, dass der Code in der run-Methode nicht ausgeführt wird. (die rollOut() selbst wird natürlich schon betreten). Der EDT hat sonst eig. grad nix zu tun. Ich kann mir das Verhalten nicht erklären, wieso hat der EDT grad keine Lust? Ich habs auch per invokeAndWait versucht, da ich mir dachte naja vllt macht er es erst sehr viel später. Aber ne, da krieg ich nur ne Exception.
...ich hab spontan noch eine kleine Verständnisfrage: Wieso kann ich diese Methoden ohne das Dialog-Objekt aufrufen? ist zB removeAll() nicht this.removeAll() ? Ich dachte wenn man kein Objekt dazu schreibt ist es immer this. Aber this müsste doch hier das Runnable sein? Vllt hab ich grad n Blackout aber das verstehe ich nicht. Hätte jetzt eig. einen Compile-Error erwartet, weil ein Runnable nicht so Methoden wie removeAll() hat.
Könnt ihr mir bitte helfen? Danke
Ich habe einen JDialog, der als Komponente ein JPanel hält. Ausserdem hat er einen MouseListener. In der mouseExited() wird eine Methode rollOut() aufgerufen:
Java:
private void rollOut() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
removeAll();
add(new JLabel("Good bye!"));
validate();
}
});
}
Allerdings passiert das nicht. Wenn ich per sysout prüfe, sehe ich, dass der Code in der run-Methode nicht ausgeführt wird. (die rollOut() selbst wird natürlich schon betreten). Der EDT hat sonst eig. grad nix zu tun. Ich kann mir das Verhalten nicht erklären, wieso hat der EDT grad keine Lust? Ich habs auch per invokeAndWait versucht, da ich mir dachte naja vllt macht er es erst sehr viel später. Aber ne, da krieg ich nur ne Exception.
...ich hab spontan noch eine kleine Verständnisfrage: Wieso kann ich diese Methoden ohne das Dialog-Objekt aufrufen? ist zB removeAll() nicht this.removeAll() ? Ich dachte wenn man kein Objekt dazu schreibt ist es immer this. Aber this müsste doch hier das Runnable sein? Vllt hab ich grad n Blackout aber das verstehe ich nicht. Hätte jetzt eig. einen Compile-Error erwartet, weil ein Runnable nicht so Methoden wie removeAll() hat.
Könnt ihr mir bitte helfen? Danke
Zuletzt bearbeitet: