Ich habe diese JTextPane
(in einem JScrollPane
verpackt), die von einem HTMLEditorKit
unterstützt wird. Der Inhalt der JTextPane
ist einfach HTML mit einigen Bildern (lokale Dateien) eingebettet mit Img-Tags. Das Problem ist, dass wenn Sie die JTextPane
laden, dauert es einen Sekundenbruchteil zu laden und dann kommt es mit der Bildlaufleiste am unteren Rand der Seite. Wenn ich das tue:Einstellen der Bildlaufleiste auf einem JScrollPane
JTextPane text = new JTextPane();
JScrollPane scroll = new JScrollPane(text);
// do some set up...
scroll.getVerticalScrollBar().setValue(0);
setzt die Bildlaufleiste für einen Moment und dann eine andere Thead (vermutlich ist, das verantwortlich für die Bilder des Ladens) kommt und klopft die Bildlaufleiste nach unten zurück. Ich habe versucht, hinzuzufügen:
((AbstractDocument)text.getDocument()).setAsynchronousLoadPriority(-1);
aber das hat es nicht behoben. Gibt es eine Möglichkeit, ein Ereignis von text.getDocument()
oder text
zu erhalten, die mich benachrichtigt, wenn das Fenster geladen ist, so dass ich die Bildlaufleiste dann festlegen kann? Die Alternative ist, dass ich einen anderen Thread aufstelle, um eine Sekunde oder so zu warten, und dann die Bildlaufleiste einstelle, aber das ist ein schlechter Hack.
Ihre Vorschläge?
Erste Lösung funktioniert, danke. Warum auf der Erde gibt es keine Methode, dies einzustellen, ohne SwingUtilities aufrufen zu müssen? –
Keine Ahnung. Ich denke, so wie es entworfen wurde, müssen Sie das JScrollPane erstellen, es dem Bildschirm hinzufügen und dann den Wert festlegen. Für mich ergibt das keinen Sinn. – Spyder