Tôi sử dụng JavaFX NumberBindings để tính các giá trị nhất định. Ban đầu mọi thứ hoạt động như mong đợi. Tuy nhiên, sau một khoảng thời gian khá nhỏ, sự ràng buộc chỉ dừng lại khi hoạt động. Tôi cũng không nhận được Ngoại lệ.Ràng buộc Đậu JavaFX đột ngột ngừng hoạt động
Tôi đã thử một số liên kết, cũng như các phương pháp tiếp cận cấp cao và cấp thấp. Ngay cả việc tính toán chính nó (khi bị ghi đè) chỉ dừng lại và không được gọi nữa. Tôi cũng đã cập nhật lên JDK mới nhất (1.8.0_05) và xây dựng lại/khởi động lại mọi thứ.
Ví dụ làm việc tối thiểu sau đây minh họa sự cố. Nó nên System.out.println chiều rộng hiện tại của cửa sổ chính để STDOUT. Sau khi thay đổi kích thước cửa sổ khoảng 10 giây, đầu ra sẽ dừng lại. Tôi cũng đã cố gắng liên kết thuộc tính kết quả với điều khiển JavaFX, để đảm bảo việc sử dụng liên tục của Property, nhưng điều đó không có ích gì. Tôi tin rằng tôi đang thiếu một số hành vi rất cơ bản của tài sản/Bindings ở đây, Google dường như không biết rằng hành vi ở tất cả.
import javafx.application.Application;
import javafx.beans.binding.NumberBinding;
import javafx.beans.property.IntegerProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class BindingsProblem extends Application {
@Override
public void start(Stage primaryStage) {
// Initialization...
StackPane root = new StackPane();
Scene scene = new Scene(root, 300, 250);
primaryStage.setScene(scene);
primaryStage.show();
// Binding - The problem occurrs here!
NumberBinding currentWidthPlusTen = primaryStage.widthProperty().add(10);
IntegerProperty boundNumberProperty = new SimpleIntegerProperty();
boundNumberProperty.bind(currentWidthPlusTen);
boundNumberProperty.addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
System.out.println(newValue.toString());
}
});
}
public static void main(String[] args) {
launch(args);
}
}
Tôi có thể tạo lại sự cố. Nó trông giống như một con bọ. Bạn đã tìm kiếm trên jira chưa? – assylias
Tôi dường như không thể tìm thấy các báo cáo lỗi hiện có. Nó có vẻ là một cái gì đó rất cơ bản, thật khó để tưởng tượng nó là một lỗi trong bản thân JDK/JRE. – underkuerbis