Java 将 Observable 列表中的列分配给 @fxml 列

Java assign column in Observable list to @fxml column

我正在寻求建议,因为我无法在场景构建器中设计我的表单和底层 TableView 显示来自可观察列表的数据。我有返回 ObservableList<ObservableList> 的模型,我想将其分配给表单控制器中的列(例如,id)。这是我的代码:

@FXML
private TableColumn id;


Database database = new Database();    
TableView tableView = new TableView();    
tableView.setItems(database.returnData()); // --> this is the method returning Observablelist     
id = tableView.getColumns().get(0); // --> line with error

我收到错误

Error:(35, 44) java: 类型不兼容:java.lang.Object 无法转换为 javafx.scene.control.TableColumn
你能帮我让它工作吗? 非常感谢!

编辑: 如果我从数据库中提取 TableView 而不是可观察列表,在 Controller 中启动它,然后将 @FXML 列分配给提取的 tableview 中的列,会不会更容易?如果是,知道怎么做吗?感谢您提供的任何帮助或分享的信息。彼得

您需要 link 您的 table 和列到您的 FXML 定义中,还需要创建一个 ObservableList 并将其放入 table.

@FXML private TableView<SimpleFileProperty> table;
@FXML private TableColumn<SimpleFileProperty, String> sizeCol;
final private ObservableList<SimpleFileProperty> tableData =
                                        FXCollections.observableArrayList();
// ...
table.setItems(tableData);

好的,就关闭这个吧。我的问题是 ObservableList< ObservableList > 的 return,在更改为 ObservableList< myClass > 后它开始工作。我强烈推荐下面提到的教程:

http://docs.oracle.com/javafx/2/ui_controls/table-view.htm