我正在寻找删除复选框背景的原因,因为它占用了TableCell
中的空间,并且导致CheckBox
不在中心。
您可以看到背景是否标记为红色,它超出了复选框并占用了空间。
这里是一个最小的代码,您可以验证它和屏幕截图:
控制器:
public class Controller implements Initializable {
@FXML
private TableColumn<Object,String> one;
@FXML
private TableView<Object> table;
@Override
public void initialize(URL location, ResourceBundle resources) {
one.setCellFactory(cell -> new CheckBoxTableCell<Object, String>(){
@Override
public void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if(empty){
return;
}
CheckBox graphic = (CheckBox) getGraphic();
graphic.setStyle("-fx-background-color: red");
}
});
table.getItems().add(new Object());
}
}
我想消除红色部分,所以只保留盒子本身。
我尝试为其重置填充,但是它不起作用。你能帮我吗?
注意:我不会接受setPadding(new Insets(0,-x,-y,0)
,因此只有在这种情况下,如果您可以解释为什么它是唯一的解决方案,那么才将它设置为负值以补偿“错误”。
底部的空格(〜1px)来自“ padding”属性,右侧的空格(〜5px)来自label-padding属性。因此,如果同时关闭两者,那么可以摆脱背景。
CheckBox graphic = (CheckBox) getGraphic();
graphic.setStyle("-fx-background-color: red;-fx-label-padding:0px;-fx-padding:0px;");