如何将CheckBox添加到JavaFX中的TableView

前端之家收集整理的这篇文章主要介绍了如何将CheckBox添加到JavaFX中的TableView前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的Java桌面应用程序中,我有一个TableView,其中我想要一个带有CheckBox的列。

我确实发现这已经完成了http://www.jonathangiles.net/javafx/2.0/CellFactories/,但由于下载不可用,因为我不知道Jonathan Giles将如何回答我的电子邮件,我以为我会问…

如何将CheckBox放在TableView的单元格中?

解决方法

您需要在TableColumn上设置一个CellFactory。

例如:

Callback<TableColumn<TableData,Boolean>,TableCell<TableData,Boolean>> booleanCellFactory = 
            new Callback<TableColumn<TableData,Boolean>>() {
            @Override
                public TableCell<TableData,Boolean> call(TableColumn<TableData,Boolean> p) {
                    return new BooleanCell();
            }
        };
        active.setCellValueFactory(new PropertyValueFactory<TableData,Boolean>("active"));
        active.setCellFactory(booleanCellFactory);

class BooleanCell extends TableCell<TableData,Boolean> {
        private CheckBox checkBox;
        public BooleanCell() {
            checkBox = new CheckBox();
            checkBox.setDisable(true);
            checkBox.selectedProperty().addListener(new ChangeListener<Boolean> () {
                public void changed(ObservableValue<? extends Boolean> observable,Boolean oldValue,Boolean newValue) {
                    if(isEditing())
                        commitEdit(newValue == null ? false : newValue);
                }
            });
            this.setGraphic(checkBox);
            this.setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
            this.setEditable(true);
        }
        @Override
        public void startEdit() {
            super.startEdit();
            if (isEmpty()) {
                return;
            }
            checkBox.setDisable(false);
            checkBox.requestFocus();
        }
        @Override
        public void cancelEdit() {
            super.cancelEdit();
            checkBox.setDisable(true);
        }
        public void commitEdit(Boolean value) {
            super.commitEdit(value);
            checkBox.setDisable(true);
        }
        @Override
        public void updateItem(Boolean item,boolean empty) {
            super.updateItem(item,empty);
            if (!isEmpty()) {
                checkBox.setSelected(item);
            }
        }
    }
原文链接:https://www.f2er.com/html/233089.html

猜你在找的HTML相关文章