簡體   English   中英

Java FX TableView無法使用FXML編輯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM