javafx - JavaFx:复选框不需要的“背景”
问题描述
我正在寻找删除复选框的背景,因为它在 a 中占用空间TableCell
并导致 theCheckBox
不居中。
如您所见,如果背景标记为红色,则它超出了复选框并占用了空间。
这是您可以验证它的最小代码和屏幕截图:
控制器:
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;");
推荐阅读
- node.js - 我可以不使用 writeFileStream 创建文件吗?
- postgresql - 我们如何将 Corda 连接到 Azure PostgreSQL?
- excel - 在工作簿之间复制而不创建链接
- spinnaker - Spinnaker Docker 注册表配置
- c++ - 如何有效地计算(基本上)等于零的复数的相位角?
- javascript - 赛普拉斯对简单 javascript 程序的检查失败
- c# - 如何使用 C# mvc entityframwork 将值插入到 forignkey 列
- typescript - 将 JS 转换为 TS - React Hooks
- r - 仅选择那些在特定列上包含特定单词的行
- javascript - 在我的 Cordova Android 应用程序中,我无法在 IFRAME 中嵌入 IP 地址或 URL