在JavaFXTableView中,如何根据某个按钮单击事件更改复选框行的颜色
我有JavaFX TableView,其中我将一列设置为CheckBoxTableCell,我想根据某个按钮单击事件更改该单元格的背景色,以便在代码的另一个UI中显示的颜色也是该单元格的背景色 我实现了CheckBoxTableCell列,如下所示-在JavaFXTableView中,如何根据某个按钮单击事件更改复选框行的颜色,java,javafx,Java,Javafx,我有JavaFX TableView,其中我将一列设置为CheckBoxTableCell,我想根据某个按钮单击事件更改该单元格的背景色,以便在代码的另一个UI中显示的颜色也是该单元格的背景色 我实现了CheckBoxTableCell列,如下所示- dtlsTableViewDisplayChannelColumn.setCellValueFactory(cellData -> cellData.getValue().isChecked()); dtlsTableViewDisp
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
方法。添加必要的最小代码,以演示问题(改变颜色的表格和零件)。准备完成后,将其复制粘贴到新项目中,然后自己运行,以查看是否出现问题。如果您不能这样做,我们也不能。