3

在我的Javafx2应用程序TableView中,我想在其中CheckBoxes选择一个或多个列。

我找到了很多答案来逐行制作一整列专用于复选框,但在我的情况下,我想为每个列标签添加一个复选框,以便仅选择当用户单击按钮以计算一行时选中的列。

我看到有一个javafx.scene.control.cell.CheckBoxTableCell<S,T>,但我可以将它用于 tableview 列选择吗?

可能吗 ?

更新 1:

感谢@amru,可以添加NodeTableColumn对象的标题中。所以我还有另一个问题,检索所有选定列的索引的最佳方法是什么?就我而言,我也在 javafx api 中搜索

4

1 回答 1

4

此代码将在列标题中放置一个复选框。

column.setGraphic(new CheckBox());

更新:使用列设置复选框的用户数据。当用户勾选复选框时,您可以稍后检索它。

EventHandler<ActionEvent> handler = new EventHandler<ActionEvent>() {

        @Override
        public void handle(ActionEvent event) {
            CheckBox cb = (CheckBox) event.getSource();
            TableColumn column = (TableColumn) cb.getUserData();
            if (cb.isSelected()) {
                lstClm.add(column);
            } else {
                lstClm.remove(column);
            }
            for (TableColumn clm : lstClm) {
                System.out.println("selected column: " + clm.getText());
            }
        }
    };
    CheckBox cb = new CheckBox();
    cb.setUserData(firstDataColumn);
    cb.setOnAction(handler);
    firstDataColumn.setGraphic(cb);

    cb = new CheckBox();
    cb.setUserData(secondDataColumn);
    cb.setOnAction(handler);
    secondDataColumn.setGraphic(cb);
于 2012-10-30T13:31:54.330 回答