JavaFx:不需要的复选框 "background"
JavaFx: Checkbox unwanted "background"
我正在寻找删除复选框的背景,因为它在 TableCell
中需要 space,这会导致 CheckBox
不居中。
如您所见,如果背景被标记为红色,它会超出复选框并占用 space。
这是您可以验证的最小代码和屏幕截图:
控制器:
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)
所以设置负值来补偿 "error" 只有在那种情况下如果你能解释它为什么它是唯一的解决方案。
底部的space(~1px)来自"padding"属性,右边的space(~5px)来自标签-填充 属性。所以如果你把两者都关掉,那么你就可以摆脱背景。
CheckBox graphic = (CheckBox) getGraphic();
graphic.setStyle("-fx-background-color: red;-fx-label-padding:0px;-fx-padding:0px;");
我正在寻找删除复选框的背景,因为它在 TableCell
中需要 space,这会导致 CheckBox
不居中。
如您所见,如果背景被标记为红色,它会超出复选框并占用 space。
这是您可以验证的最小代码和屏幕截图:
控制器:
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)
所以设置负值来补偿 "error" 只有在那种情况下如果你能解释它为什么它是唯一的解决方案。
底部的space(~1px)来自"padding"属性,右边的space(~5px)来自标签-填充 属性。所以如果你把两者都关掉,那么你就可以摆脱背景。
CheckBox graphic = (CheckBox) getGraphic();
graphic.setStyle("-fx-background-color: red;-fx-label-padding:0px;-fx-padding:0px;");