提问者:小点点

JavaFX将按钮相互绑定


不确定我的标题问题是否正确。

我试图实现的是让一个按钮创建一个车辆对象。然后让一个不同的按钮调用方法embark(这只会更新一些字段)。

所以一般来说:

一个按钮创建对象车辆的实例。调用此实例上的方法的第二个按钮。

        btnCar.setOnAction(new EventHandler<ActionEvent>(){
        public void handle(ActionEvent event){
            Vehicle C = new Car(amountPass, "hej", "hej");
        }
    });
    btnEmbark.setOnAction(new EventHandler<ActionEvent>(){
        public void handle(ActionEvent event){
            ferry.embark(C);
        }
    });

谢谢!


共1个答案

匿名用户

有几种方法可以做到这一点,我首先想到的是JavaFX属性:

ObjectProperty<Object> object = new SimpleObjectProperty<>();

Button button1 = new Button("create");
button1.setOnAction(ev -> object.set(new Object()));

Button button2 = new Button("magic");
button2.setOnAction(ev -> object.get().hashCode());
button2.disableProperty().bind(Bindings.isNull(object));

使用Bindings,我们确保只有在已经创建和存储自定义对象时才能触发第二个按钮。

另一种方法是编写Button的子类,与另一个Button进行通信。这是个人品味的问题。

相关问题