【发布时间】:2015-09-16 15:06:39
【问题描述】:
我有三个控制器,分别是 ParentController、ChildController1 和 ChildController2。 ParentController 同时加载所有子控制器。我有一个来自 ChildController1 的 list1,我想将它绑定到 ChildController2 的 list2。这是一个示例代码:
ParentController.java
public class ParentController{
ChildController1 controller1;
ChildController2 controller2;
loadControllers();
}
public void loadControllers(){
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/view1.fxml"));
Parent root1 = (Parent) fxmlLoader.load();
controller1 = fxmlLoader.getController();
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/view1.fxml"));
Parent root2 = (Parent) fxmlLoader.load();
controller2 = fxmlLoader.getController();
Bindings.bindContentBidirectional(controller1.list1, controller2.list2);
}
ChildController1.java
public class ChildController1{
@FXML
Button addItem;
@FXML
TextField textField;
ObservableList list1 = FXCollections.observableArrayList("apple", "grapes");
@Override
public void initialize(URL url, ResourceBundle rb){
addItem.setOnAction(e->{
list1.add(textField.getText());
});
}
}
ChildController2.java
public class ChildController2{
@FXML
ComboBox combobox;
ObservableList list2 = FXCollections.observableArrayList();
@Override
public void initialize(URL url, ResourceBundle rb){
combobox.setItems(list2);
}
}
运行应用程序时,可以在controller2的组合框中选择前两项(“apple”和“grapes”)。但是当我在 list1 中添加一个新字符串说“橙色”时,“橙色”在组合框项目列表中可见,但无法选择它。
任何帮助将不胜感激。提前致谢。
【问题讨论】:
-
你能把这个做成一个完整的例子吗?它基本上对我有用。您拥有的代码似乎很好 - 错误必须在其他地方。
-
你是对的..我认为错误在我的控制器或绑定中..它实际上是在我试图添加到列表中的对象中。我已经发布了更详细的示例。
标签: java binding combobox javafx