我使用JavaFX NumberBindings来计算某些值.最初一切都按预期工作.然而,在相当少的时间之后,绑定才停止工作.我也没有收到异常.
我尝试了几种绑定,以及高级和低级方法.即使计算本身(被覆盖时)也会停止并且不再被调用.我还更新了最新的JDK(1.8.0_05)并重建/重新启动了所有内容.
以下最小工作示例说明了该问题.它应该将System.out.println当前主窗口的宽度改为STDOUT.调整窗口大小约10秒后,输出就会停止.我还尝试将结果属性绑定到JavaFX控件,以确保Property继续使用,但这无济于事.我相信我在这里遗漏了一些非常基本的Property/Bindings行为,谷歌似乎根本不知道这种行为.
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 …Run Code Online (Sandbox Code Playgroud)