在JavaFXTableView中,如何根据某个按钮单击事件更改复选框行的颜色

在JavaFXTableView中,如何根据某个按钮单击事件更改复选框行的颜色,java,javafx,Java,Javafx,我有JavaFX TableView,其中我将一列设置为CheckBoxTableCell,我想根据某个按钮单击事件更改该单元格的背景色,以便在代码的另一个UI中显示的颜色也是该单元格的背景色 我实现了CheckBoxTableCell列,如下所示- dtlsTableViewDisplayChannelColumn.setCellValueFactory(cellData -> cellData.getValue().isChecked()); dtlsTableViewDisp

我有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();
                }
            }));
dtlsTableViewDisplayChannelColumn.setCellValueFactory(cellData->cellData.getValue().isChecked());
dtlsTableViewDisplayChannelColumn
.setCellFactory(CheckBoxTableCell.forTableColumn(新回调(){
@凌驾
公共observeValue调用(整数参数){
logger.info(“AID”+observableDataList.get(param).getAid()+“将值更改为”
+observedatalist.get(param.isChecked());
if(observedatalist.get(param).isChecked().get()){
add(observedatalist.get(param.getAid());
}否则{
remove(observedatalist.get(param.getAid());
}
返回observeDataList.get(param.isChecked();
}
}));
并在UI中显示如下-

所以,当点击“可视化”按钮时,复选框单元格的背景颜色应更改为提供的颜色值

请查找下图,这是预期的输出-
我想这就是你要找的。。。我将假装我理解您的代码,并向您展示编辑的方向:

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();
                }
            }));
dtlsTableViewDisplayChannelColumn.setCellValueFactory(cellData->cellData.getValue().isChecked());
dtlsTableViewDisplayChannelColumn
.setCellFactory(CheckBoxTableCell.forTableColumn(新回调(){
@凌驾
公共observeValue调用(整数参数){
logger.info(“AID”+observableDataList.get(param).getAid()+“将值更改为”
+observedatalist.get(param.isChecked());
if(observedatalist.get(param).isChecked().get()){
add(observedatalist.get(param.getAid());

observedatalist.get(param).setStyle(“-fx背景色:红色;”);//请提供一个例子来说明这个问题。嗨@kleopatra,我读了链接-,但我无法清楚地了解我应该为这个问题提供什么样的详细信息。因为我是这个stackoverflow论坛的新手,请让我知道,我是否应该为这个问题提供更多代码或更多信息。我完全不知道是哪一个例子“编写一个简短的独立可运行的示例,演示您所追求的目标以及它是如何工作的”这一说法很难理解。在您的问题中发布一个代码片段,其中包括一个类扩展
应用程序
和一个运行它的
main
方法。添加必要的最小代码,以演示问题(改变颜色的表格和零件)。准备完成后,将其复制粘贴到新项目中,然后自己运行,以查看是否出现问题。如果您不能这样做,我们也不能。