Tôi có số này JTextPane
(được bọc trong JScrollPane
) được hỗ trợ bởi HTMLEditorKit
. Nội dung của JTextPane
là HTML đơn giản với một số hình ảnh (tệp cục bộ) được nhúng bằng thẻ img. Vấn đề là khi bạn tải JTextPane
, phải mất một giây để tải và sau đó nó đi kèm với thanh cuộn ở dưới cùng của trang. Nếu tôi làm:Đặt thanh cuộn trên JScrollPane
JTextPane text = new JTextPane();
JScrollPane scroll = new JScrollPane(text);
// do some set up...
scroll.getVerticalScrollBar().setValue(0);
nó đặt thanh cuộn trong giây lát và sau đó một thead (có lẽ đó là chịu trách nhiệm về tải hình ảnh) đến và gõ thanh cuộn lại để phía dưới. Tôi đã thử thêm:
((AbstractDocument)text.getDocument()).setAsynchronousLoadPriority(-1);
nhưng điều đó không khắc phục được. Có cách nào để nhận sự kiện từ text.getDocument()
hoặc text
sẽ thông báo cho tôi khi ngăn tải hoàn tất để tôi có thể đặt thanh cuộn không? Cách khác là tôi thiết lập một luồng khác để chờ một giây hoặc lâu hơn, và sau đó thiết lập thanh cuộn, nhưng đây là một hack xấu.
Đề xuất của bạn?
Giải pháp đầu tiên hoạt động, cảm ơn. Tại sao trên trái đất không có phương pháp để thiết lập điều này mà không cần phải gọi SwingUtilities? –
Không có ý tưởng. Tôi nghĩ cách nó được thiết kế là bạn phải tạo JScrollPane, thêm nó vào màn hình và _then_ đặt giá trị. Không có ý nghĩa với tôi. – Spyder