![](/img/trans.png)
[英]Bind TableView items with ObservableList in FXML - Java FX
[英]Java FX TableView not editable with FXML
我目前正在開發包含TableView
的Java FX應用程序。 在此TableView
我想使用可編輯的CheckBoxTableCell
。 首先,我使用MiG Layout在Java代碼中添加了所有組件。 使用該配置,所有內容都是可編輯的(列大小,列順序,復選框)。 當我使用Scene Builder將所有代碼傳輸到FXML時,除了TableView之外,其他所有功能都工作正常。 我不知道如何在FXML文件中設置CellFactory和CellValueFactory(我已經看到了兩個示例,但無法使其正常工作)。 所以我決定在initialize()
方法中設置這些工廠:
voteCol.setCellValueFactory(new Callback<CellDataFeatures<DataItem, Boolean>, ObservableValue<Boolean>>() {
@Override
public ObservableValue<Boolean> call(
CellDataFeatures<DataItem, Boolean> arg0) {
return arg0.getValue().voteProperty();
}
});
voteCol.setCellFactory(new Callback<TableColumn<DataItem, Boolean>, TableCell<DataItem, Boolean>>() {
@Override
public TableCell<DataItem, Boolean> call(
TableColumn<DataItem, Boolean> arg0) {
return new CheckBoxTableCell<DataItem, Boolean>();
}
});
voteCol.setEditable(true);
dataTableView.setEditable(true);
這是Scene Builder生成的FXML代碼
<TableView fx:id="dataTableView" editable="true"
mouseTransparent="true" pickOnBounds="false" prefHeight="-1.0"
prefWidth="-1.0" AnchorPane.bottomAnchor="41.0"
AnchorPane.leftAnchor="10.0" AnchorPane.rightAnchor="10.0"
AnchorPane.topAnchor="80.0">
<columns>
<TableColumn fx:id="voteCol" maxWidth="5000.0" minWidth="10.0"
prefWidth="32.0" text="Vote" visible="true" />
...
</columns>
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
</columnResizePolicy>
</TableView>
與DataItem的數據綁定正常工作。
如果有人能指出正確的方向,我將非常感激。
很可能從未調用過初始化。
確保您的控制器實現了Initializable
接口,並且initialize()
方法具有正確的簽名:
public class MyController implements Initializable {
@Override
public void initialize(URL location, Resources resources) {
//....
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.