javafx treeTableView删除项目

时间:2015-01-04 10:22:08

标签: java javafx-2

我有一个javaFx treeTableView组件。在其中一个列中有一个用于删除行数据的按钮。 w单击每一行显示页面其他位置的一些数据。现在,我想删除一行,自动选择其他行。最后我为糟糕的英文写作道歉。

controller.java:

@FXML
public TreeTableView<ClientDispatcherConnectionFactory> treeTableView;
@FXML
TreeTableColumn<ClientDispatcherConnectionFactory, ClientDispatcherConnectionFactory> columnName;
@FXML
TreeTableColumn<ClientDispatcherConnectionFactory, ClientDispatcherConnectionFactory> refreshColumn;
@FXML
TreeTableColumn<ClientDispatcherConnectionFactory, ClientDispatcherConnectionFactory> deleteColumn;
private HBox hb = new HBox();
private GridPane downPane = new GridPane();
private Node updateimage = new ImageView(new Image(getClass()
        .getResourceAsStream(Utils.getMessage("update"))));
private Node deleteimage = new ImageView(new Image(getClass()
        .getResourceAsStream(Utils.getMessage("delete"))));

TreeItem<ClientDispatcherConnectionFactory> container = new TreeItem<ClientDispatcherConnectionFactory>();

TreeItem<ClientDispatcherConnectionFactory> selectedTree;
Stage dialog = null;

void initialize() {
    columnName
    .setCellValueFactory(new Callback<CellDataFeatures<ClientDispatcherConnectionFactory, ClientDispatcherConnectionFactory>, ObservableValue<ClientDispatcherConnectionFactory>>() {
        @SuppressWarnings({ "rawtypes", "unchecked" })
        public ObservableValue<ClientDispatcherConnectionFactory> call(
                CellDataFeatures<ClientDispatcherConnectionFactory, ClientDispatcherConnectionFactory> features) {
            return new ReadOnlyObjectWrapper(features.getValue()
                    .getValue());
        }
    });
    refreshColumn
    .setCellValueFactory(new Callback<CellDataFeatures<ClientDispatcherConnectionFactory, ClientDispatcherConnectionFactory>, ObservableValue<ClientDispatcherConnectionFactory>>() {
        @SuppressWarnings({ "rawtypes", "unchecked" })
        public ObservableValue<ClientDispatcherConnectionFactory> call(
                CellDataFeatures<ClientDispatcherConnectionFactory, ClientDispatcherConnectionFactory> features) {
            return new ReadOnlyObjectWrapper(features.getValue()
                    .getValue());
        }
    });
    deleteColumn
    .setCellValueFactory(new Callback<CellDataFeatures<ClientDispatcherConnectionFactory, ClientDispatcherConnectionFactory>, ObservableValue<ClientDispatcherConnectionFactory>>() {
        @SuppressWarnings({ "rawtypes", "unchecked" })
        public ObservableValue<ClientDispatcherConnectionFactory> call(
                CellDataFeatures<ClientDispatcherConnectionFactory, ClientDispatcherConnectionFactory> features) {
            return new ReadOnlyObjectWrapper(features.getValue()
                    .getValue());
        }
    });

    createTreeList();
    treeTableView.setRoot(container);
    treeTableView.setShowRoot(false);
    selectNodeEvent();
    treeGenerate();     
}

private TreeItem<ClientDispatcherConnectionFactory> createTreeList() {
    for (ClientDispatcherConnectionFactory iter : clientDispatchersList) {
        TreeItem<ClientDispatcherConnectionFactory> item = new TreeItem<ClientDispatcherConnectionFactory>(
                iter);
        container.getChildren().add(item);
    }
    return container;
}

private void treeGenerate() {
    refreshColumn
            .setCellFactory(new Callback<TreeTableColumn<ClientDispatcherConnectionFactory, ClientDispatcherConnectionFactory>, TreeTableCell<ClientDispatcherConnectionFactory, ClientDispatcherConnectionFactory>>() {
                public TreeTableCell<ClientDispatcherConnectionFactory, ClientDispatcherConnectionFactory> call(
                        TreeTableColumn<ClientDispatcherConnectionFactory, ClientDispatcherConnectionFactory> btnCol) {
                    return new TreeTableCell<ClientDispatcherConnectionFactory, ClientDispatcherConnectionFactory>() {
                        @SuppressWarnings("static-access")
                        public void updateItem(
                                final ClientDispatcherConnectionFactory item,
                                boolean empty) {
                            hb = new HBox();
                            updateimage = new ImageView(new Image(
                                    getClass().getResourceAsStream(
                                            Utils.getMessage("update"))));
                            Node deleteimage = new ImageView(new Image(
                                    getClass().getResourceAsStream(
                                            Utils.getMessage("delete"))));
                            updateimage
                                    .setOnMouseClicked(new EventHandler<MouseEvent>() {
                                        public void handle(
                                                MouseEvent mouseEvent) {
                                            TreeItem<ClientDispatcherConnectionFactory> dispatcher = treeTableView
                                                    .getSelectionModel()
                                                    .getSelectedItem();
                                            dispatcher
                                                    .getValue()
                                                    .creatClientDispatcherMBean();
                                            if (dispatcher.getValue()
                                                    .safeCheck()) {
                                                RowEnum.clientDispatcher = dispatcher
                                                        .getValue()
                                                        .getClientDispatcher();
                                                APane.getChildren().clear();
                                                APane.getChildren().add(
                                                        scrollVB);
                                                rebindChoiseBoxs();         
                                                hb.getChildren().clear();
                                                setGraphic(null);
                                                LOG.info("service is up");
                                            } else {
                                                RowEnum.clientDispatcher = null;
                                                APane.getChildren().clear();
                                                APane.getChildren().add(
                                                        pagenotfound);
                                                LOG.info("service is down yet");
                                            }
                                            createTable();
                                        }
                                    });

                            super.updateItem(item, empty);
                            if (empty) {
                                setText(null);
                                setGraphic(null);
                            } else {
                                if (item != null) {

                                    if (!(item.safeCheck())) {
                                        selectedTree.setGraphic(serveroffline);                                         
                                        hb.getChildren().clear();
                                        hb.getChildren()
                                                .addAll(updateimage);
                                        hb.setMargin(deleteimage,
                                                new Insets(0, 0, 0, 9));
                                        hb.setMargin(updateimage,
                                                new Insets(0, 0, 0, 9));
                                        setGraphic(hb);
                                    } else {
                                        selectedTree.setGraphic(server);        
                                        hb.getChildren().clear();
                                        setGraphic(null);
                                    }
                                }
                            }
                        }
                    };
                }
            });


    deleteColumn
            .setCellFactory(new Callback<TreeTableColumn<ClientDispatcherConnectionFactory, ClientDispatcherConnectionFactory>, TreeTableCell<ClientDispatcherConnectionFactory, ClientDispatcherConnectionFactory>>() {
                public TreeTableCell<ClientDispatcherConnectionFactory, ClientDispatcherConnectionFactory> call(
                        TreeTableColumn<ClientDispatcherConnectionFactory, ClientDispatcherConnectionFactory> btnCol) {
                    return new TreeTableCell<ClientDispatcherConnectionFactory, ClientDispatcherConnectionFactory>() {
                        @SuppressWarnings("static-access")
                        public void updateItem(
                                final ClientDispatcherConnectionFactory item,
                                boolean empty) {
                            hb = new HBox();
                            Node deleteimage = new ImageView(new Image(
                                    getClass().getResourceAsStream(
                                            Utils.getMessage("delete"))));
                            deleteimage
                                    .setOnMouseClicked(new EventHandler<MouseEvent>() {
                                        public void handle(
                                                MouseEvent mouseEvent) {
                                            String message = "do you want to delete";
                                            Stage stage = (Stage) treeTableView
                                                    .getScene().getWindow();
                                            dialog = new MyDialog(stage,
                                                    message);
                                            dialog.sizeToScene();
                                            dialog.show();
                                        }
                                    });

                            noBtn.setOnAction(new EventHandler<ActionEvent>() {
                                public void handle(ActionEvent event) {
                                    dialog.close();
                                    LOG.info("service cleaning canceled");
                                }
                            });
                            yesBtn.setOnAction(new EventHandler<ActionEvent>() {
                                public void handle(ActionEvent event) {

                                    dialog.close();
                                    TreeItem<ClientDispatcherConnectionFactory> deleteItem = treeTableView.getSelectionModel()
                                            .getSelectedItem();                                     
                                    propertiesremove(deleteItem.getValue()
                                            .getConnectionName());
                                    clientDispatchersList.remove(deleteItem
                                            .getValue());

                                    if (clientDispatchersList
                                            .size() == 0) {
                                        treeTableView.getRoot().getChildren()
                                        .clear();
                                        RowEnum.clientDispatcher = null;
                                        createTable();
                                        APane.getChildren().clear();
                                        APane.getChildren().add(
                                                pagenotfound);
                                        selectedClientIndex = 0;
                                    } else{
                                        treeTableView.getSelectionModel().clearSelection();
                                        container.getChildren().clear();                                        
                                        container = createTreeList();
                                        System.out.println(container.getChildren().get(0).getValue());
                                        treeTableView = new TreeTableView<>(container);
//                                          treeTableView.setRoot(container);
                                        System.out.println("deleted"
                                                + "");
                                    }
                                }
                            });

                            super.updateItem(item, empty);
                            if (empty) {
                                setText(null);
                                setGraphic(null);
                            } else {
                                if (item != null) {
                                    hb.getChildren().clear();
                                    hb.getChildren().addAll(deleteimage);
                                    hb.setMargin(deleteimage, new Insets(0,
                                            0, 0, 11));
                                    setGraphic(hb);
                                }
                            }
                        }
                    };
                }
            });

}


    private boolean selectNodeEvent() {
    treeTableView
            .getSelectionModel()
            .selectedItemProperty()
            .addListener(
                    new ChangeListener<TreeItem<ClientDispatcherConnectionFactory>>() {

                        @Override
                        public void changed(
                                ObservableValue<? extends TreeItem<ClientDispatcherConnectionFactory>> observable,
                                TreeItem<ClientDispatcherConnectionFactory> oldValue,
                                TreeItem<ClientDispatcherConnectionFactory> newValue) {                             
                            treeGenerate();
                            selectedClientIndex = treeTableView
                                    .getSelectionModel().getSelectedIndex();
                            if (selectedTree != null) {
                                selectedTree = newValue;
                                selectedClient = selectedTree.getValue();
//                                  System.out.println(selectedTree);
                                if (selectedTree.getValue() != null) {
                                    return;
                                }
                                if (selectedTree.getValue().safeCheck()) {
                                    RowEnum.clientDispatcher = selectedTree
                                            .getValue()
                                            .getClientDispatcher();
                                    loadLeftPage(true);
                                    createRoutes(selectedTree.getValue()
                                            .getMbsc());
                                    changeMBeanBtn.setDisable(false);
                                    LOG.info(selectedTree.getValue()
                                            + " was loaded");

                                } else {
                                    loadLeftPage(false);
                                    RowEnum.clientDispatcher = null;
                                }
                                createTable();
                                rebindChoiseBoxs();
                                // factory.updateItem(selectedTree, false);
                            }
                            // System.out.println(selectedTree);
                            // factory.updateItem(selectedTree, true);

                        }

                    });

    return true;
}

0 个答案:

没有答案