簡體   English   中英

在JavaFX TableView中,如何基於某些按鈕單擊事件來更改復選框行的顏色

[英]In JavaFX TableView, how to change color of a checkbox row based on some button click event

我有JavaFX TableView,我在其中將一列設置為CheckBoxTableCell,並且我想基於一些按鈕單擊事件來更改該單元格的背景顏色,以便在我的代碼的另一個UI中顯示的顏色也是背景該單元格的顏色。

我已經實現了CheckBoxTableCell列,如下所示-

dtlsTableViewDisplayChannelColumn.setCellValueFactory(cellData -> cellData.getValue().isChecked());
    dtlsTableViewDisplayChannelColumn
            .setCellFactory(CheckBoxTableCell.forTableColumn(new Callback<Integer, ObservableValue<Boolean>>() {
                @Override
                public ObservableValue<Boolean> call(Integer param) {
                    logger.info("AID " + observableDataList.get(param).getAid() + " changed value to "
                            + observableDataList.get(param).isChecked());
                    if (observableDataList.get(param).isChecked().get()) {
                        aidSet.add(observableDataList.get(param).getAid());
                    } else {
                        aidSet.remove(observableDataList.get(param).getAid());
                    }
                    return observableDataList.get(param).isChecked();
                }
            }));

它在UI中顯示如下- 帶Visualize按鈕的UI中的CheckBox

因此,當單擊“可視化”按鈕時,選中的CheckBox單元格的背景色應更改為提供的顏色值。

請在下面的圖像中找到預期的輸出- 單擊“ Visualize”按鈕后,UI中的CheckBox的Checked CheckBox單元格的背景色發生了變化

我想這就是您要尋找的...我要假裝我理解您的代碼並向您顯示編輯內容:

dtlsTableViewDisplayChannelColumn.setCellValueFactory(cellData -> cellData.getValue().isChecked());
    dtlsTableViewDisplayChannelColumn
            .setCellFactory(CheckBoxTableCell.forTableColumn(new Callback<Integer, ObservableValue<Boolean>>() {
                @Override
                public ObservableValue<Boolean> call(Integer param) {
                    logger.info("AID " + observableDataList.get(param).getAid() + " changed value to "
                            + observableDataList.get(param).isChecked());
                    if (observableDataList.get(param).isChecked().get()) {
                        aidSet.add(observableDataList.get(param).getAid());
                        observableDataList.get(param).setStyle("-fx-background-color: red;"); //<--- This changes the color of the specific checkbox 
                        //Note: I assume "param" calls the specific checkbox in the checkbox list "observableDataList"
                    } else {
                        aidSet.remove(observableDataList.get(param).getAid());
                    }
                    return observableDataList.get(param).isChecked();
                }
            }));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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