JavaFX双向绑定不适用于无法编辑的控件

JavaFX双向绑定不适用于无法编辑的控件,第1张

JavaFX双向绑定不适用于无法编辑的控件

双向绑定示例:

import javafx.application.Application;import javafx.beans.binding.Bindings;import javafx.beans.property.SimpleStringProperty;import javafx.beans.property.StringProperty;import javafx.beans.value.ChangeListener;import javafx.beans.value.Observablevalue;import javafx.event.ActionEvent;import javafx.event.EventHandler;import javafx.scene.Scene;import javafx.scene.control.Button;import javafx.scene.control.TextField;import javafx.scene.layout.BorderPane;import javafx.stage.Stage;public class JavaFXApplication10 extends Application {    private Model model = new Model();    @Override    public void start(Stage primaryStage) {        final TextField textField = new TextField();        Bindings.bindBidirectional(textField.textProperty(), model.firstProperty());        // Track the changes        model.firstProperty().addListener(new ChangeListener<String>() { @Override public void changed(Observablevalue<? extends String> arg0, String arg1, String arg2) {     System.out.println("model old val: " + arg1);     System.out.println("model new val: " + arg2);     System.out.println(); }        });        textField.textProperty().addListener(new ChangeListener<String>() { @Override public void changed(Observablevalue<? extends String> arg0, String arg1, String arg2) {     System.out.println("textField old val: " + arg1);     System.out.println("textField new val: " + arg2);     System.out.println(); }        });        Button btn = new Button();        btn.setText("Change the model's text");        btn.setonAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) {     model.setFirst("changed from button action");     System.out.println("Done."); }        });        BorderPane root = new BorderPane();        root.setTop(textField);        root.setBottom(btn);        primaryStage.setScene(new Scene(root, 300, 250));        primaryStage.show();    }    public static void main(String[] args) {        launch(args);    }    // Data Model    public static class Model {        StringProperty first = new SimpleStringProperty();        //getter        public String getFirst() { return first.get();        }        //setter        public void setFirst(String first) { this.first.set(first);        }        //new "property" accessor        public StringProperty firstProperty() { return first;        }    }}

双向绑定:
1种方式-输入到textField中的文本将反映到模型的第一个stringProperty。
相反的第二种方式-单击按钮,您会注意到,设置了模型的第一个stringProperty时,文本字段的文本值也会更改。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5561654.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存