如何让 Togglebutton 在 tableView 列中正常工作?

问题描述 投票:0回答:1

我想让我的切换按钮列在我的 TableView 中正常工作。当我按下切换按钮时,什么也没有发生。如何修复这个问题?我没有更改“Medicaments.java”模型中的任何内容。看起来像下面这样:

@FXML
private TableColumn<Medicaments, Void> editRow;

我的型号:

     public Medicaments(int idNumber, String LOTNumber, String medName, String dateExpiry, int quantity, String unit,String timeLeft) {
    this.idNumber = idNumber;
    this.LOTNumber = LOTNumber;
    this.medName = medName;
    this.dateExpiry = dateExpiry;
    this.quantity = quantity;
    this.unit = unit;
    this.timeLeft = timeLeft;
}

切换按钮栏:

 private void AddEditButton() {
    TableColumn<Medicaments, Void> colBtn = new TableColumn("");

    Callback<TableColumn<Medicaments, Void>, TableCell<Medicaments, Void>> cellFactory = new 
     Callback<TableColumn<Medicaments, Void>, TableCell<Medicaments, Void>>() {
        @Override
        public TableCell<Medicaments, Void> call(final TableColumn<Medicaments, Void> param) 
          {
            final TableCell<Medicaments, Void> cell = new TableCell<Medicaments, Void>() {
                private final ToggleButton toggleButton = new ToggleButton("Edit");
                {
                    /**/

                    toggleButton.addEventFilter(MouseEvent.MOUSE_PRESSED, event -> {
                        event.consume();
                        toggleButton.selectedProperty().addListener((observable,oldValue, 
                newValue) -> {
                            if(newValue){
                                toggleButton.setText("Save");
                            } else {
                                toggleButton.setText("Edit");
                            }
                        });

                    });
                    /*btn.addEventFilter(MouseEvent.MOUSE_PRESSED, event ->{
                        event.consume();
                        Medicaments data = getTableView().getItems().get(getIndex());
                        System.out.println("selectedData: " + data);

                    });*/

                }
                @Override
                public void updateItem(Void item, boolean empty) {
                    super.updateItem(item, empty);
                    if (empty) {
                        setGraphic(null);
                    } else {
                        setGraphic(toggleButton);
                    }
                }
            };
            return cell;
        }
    };
    editRow.setCellFactory(cellFactory);
}
javafx
1个回答
0
投票

您必须使用

setOnAction
事件处理程序 添加到按钮,以告诉它在单击时要做什么。

© www.soinside.com 2019 - 2024. All rights reserved.