gpt4 book ai didi

java - 如何在 StringProperty 和组合框 SelectedItemProperty 之间进行双向绑定(bind)

转载 作者:行者123 更新时间:2023-12-01 19:38:51 25 4
gpt4 key购买 nike

我想要在 StringProperty 和组合框 SelectedItemProperty 之间进行双向绑定(bind)。每当组合框的选定项发生更改时,它都应将该值反射(reflect)到 StringProperty。同样,每当 StringProperty 的值发生变化时,它都应该选择组合框中的值。

我们如何进行这种绑定(bind)?

最佳答案

您不能绑定(bind)到 SelectedItemProperty,而是将绑定(bind)添加到 ComboBoxValueProperty:

comboBox.valueProperty().bindBidirectional(stringProperty);

这是一个完整的示例来演示:

import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class BiBindingExample extends Application {

public static void main(String[] args) {
launch(args);
}

@Override
public void start(Stage primaryStage) {

// Simple interface
VBox root = new VBox(5);
root.setPadding(new Insets(10));
root.setAlignment(Pos.CENTER);

// Our StringProperty
StringProperty stringProperty = new SimpleStringProperty();

// Label to display our StringProperty
Label label = new Label();
label.textProperty().bind(stringProperty);

// The ComboBox
ComboBox<String> comboBox = new ComboBox<>();
comboBox.getItems().addAll("Zero", "One", "Two", "Three", "Four", "Five");

// Bind the ComboBox value to that of the StringProperty, and vice versa
comboBox.valueProperty().bindBidirectional(stringProperty);

// A button to programmatically change the StringProperty
Button button = new Button("Return to Zero");
button.setOnAction(e -> stringProperty.set("Zero"));

root.getChildren().addAll(comboBox, label, button);

// Show the Stage
primaryStage.setWidth(300);
primaryStage.setHeight(300);
primaryStage.setScene(new Scene(root));
primaryStage.show();
}
}

关于java - 如何在 StringProperty 和组合框 SelectedItemProperty 之间进行双向绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56199267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com