Tôi đã tạo một ứng dụng JavaFX nơi tôi đang cập nhật nhật ký với một quy trình nền. Vì vậy, tôi đang thiết lập văn bản đăng nhập trong TextArea và thiết lập di chuyển xuống dưới bằng cách sử dụng logs.setScrollTop(Double.MAX_VALUE)
. nhưng scrollbar được thiết lập để hơi lên từ phía dưới. Tôi cũng đã thử TextFlow bên trong ScrollPan và thiết lập cuộn xuống dưới bằng cách sử dụng logDisplay.setVvalue(1.0)
. Nó cũng cho kết quả tương tự.JavaFX: Sau khi đặt văn bản trong textArea, cài đặt cuộn xuống dưới trong chuỗi riêng biệt không hoạt động
Platform.runLater(() -> {
logs.setText([setting log text]);//TextArea logs
logs.setScrollTop(Double.MAX_VALUE));
});
//For TextFlow inside ScrollPane
Platform.runLater(() -> {
logs.setText([setting log text]);//Text logs
logDisplay.setVvalue(1.0);
});
Tôi cũng đã cố gắng để chạy mã trong chủ đề riêng biệt như
new Thread() {
public void run(){
System.out.println("called set test");
logs.setText([setting log text]);//Text logs
logDisplay.setVvalue(1.0);
}
}.start();
Nhưng không có gì đang làm việc :(
bạn có thể giúp tôi có gì sai trong việc này
Cảm ơn
? - Chỉnh sửa--
Dường như vấn đề là do vấn đề luồng. Giá trị thanh cuộn đang cập nhật lên giá trị văn bản trước đó. g giá trị cuộn nó không lấy giá trị mới nhất nhưng nó nhận được giá trị cũ hơn nên thanh cuộn được đặt ở cuối thông báo trước đó, chứ không phải dòng cuối cùng thực tế.
Tôi đã đăng một giải pháp thực sự đơn giản [trong câu hỏi này] (http://stackoverflow.com/questions/43886613/javafx-textarea-cursor-moves-back-to-the-first-line-on-new -text/43886919 # 43886919) sử dụng 'appendText' thay vì' setText' và loại bỏ nhu cầu thiết lập dấu mũ theo cách thủ công. – DVarga