【发布时间】:2025-12-18 06:25:01
【问题描述】:
当底层对象更改时,JavaFx ComboBox 不会更新其选定项。举个简单的例子:
StringProperty item1 = new SimpleStringProperty("Item-1");
StringProperty item2 = new SimpleStringProperty("Item-2");
StringProperty item3 = new SimpleStringProperty("Item-3");
ObservableList<StringProperty> items = FXCollections.observableArrayList(item1, item2, item3);
ComboBox comboBox = new ComboBox();
comboBox.setItems(items);
comboBox.getSelectionModel().select(item1);
StackPane root = new StackPane();
root.getChildren().add(comboBox);
Scene scene = new Scene(root, 300, 250);
primaryStage.setScene(scene);
primaryStage.show();
Timeline timeline1 = new Timeline(new KeyFrame(
Duration.millis(1000), ae -> {
item1.set("Changing the string");
}));
timeline1.play();
希望 ComboBox 反映我对 item1 所做的更改。有没有办法做到这一点?
【问题讨论】:
-
您真的需要列表中的项目为
StringPropertys,而不仅仅是Strings?如果是这样,大概您在组合框上设置了电池工厂和纽扣电池...您也可以发布该代码吗?
标签: java javafx javafx-2 javafx-8