tôi có một Ứng dụng JavaFX và trong đó có một nhiệm vụ đồng thời. Trong khi nhiệm vụ đang chạy, tôi muốn thêm thông điệp từ updateMessage() để một TextAreaJavaFX ChangeListener không phải lúc nào cũng hoạt động
vì các ràng buộc không nối thêm văn bản mới cho TextArea, tôi sử dụng một ChangeListener
worker.messageProperty().addListener((observable, oldValue, newValue) -> {
ta_Statusbereich.appendText("\n" + newValue);
});
Đó là làm việc nhưng không phải trên mọi thay đổi. Tôi đã kiểm tra nó với một System.out.println() và tính vào nhiệm vụ từ 1 để 300
for (Integer i = 1; i <= 300; i++) {
updateMessage(i.toString());
System.out.println(i.toString());
}
println() này trong Task mang lại cho tôi những gì tôi muốn 1,2,3,4,5 , 6,7,8, v.v. nhưng TextArea của tôi cho thấy 1,4,5,8,9 i sau đó thêm một println trong ChangeListener và nhận được kết quả tương tự, 1,4,5,8,9 (kết quả là ngẫu nhiên không phải lúc nào cũng là 1,4,5 ...)
tại sao? có cách nào khác để thêm văn bản tin nhắn vào TextAres, có thể với ràng buộc không?
"Tại sao?": Giải thích đầy đủ trong [tài liệu] (http://docs.oracle.com/javase/8/javafx/api/javafx/concurrent/Task.html#updateMessage -java.lang.String-). Bạn thực sự muốn làm gì ở đây? (Tôi giả sử nó không chỉ để hiển thị các giá trị 1-300 trong một vùng văn bản, vì bạn sẽ không cần một nhiệm vụ cho điều đó.) –
tác vụ đổi tên tệp trong một thư mục đã chọn qua mạng và tôi cố liệt kê tất cả các tệp được xử lý trong textarea. giống như thiết lập in các tệp được sao chép. – Garog