JavaFx: флажок нежелательного "фона" - PullRequest
0 голосов
/ 20 января 2020

Я ищу, чтобы удалить фон флажка, потому что он занимает место в 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());
    }
}

enter image description here

Я хотел бы убрать красную часть, оставив только саму коробку.

Я попытался сбросить для нее отступ, но он не работает. Вы можете мне помочь?

Примечание: я не приму setPadding(new Insets(0,-x,-y,0), поэтому установка отрицательных значений для него, чтобы компенсировать «ошибку» только в том случае, если вы можете объяснить это, почему это единственное решение.

1 Ответ

2 голосов
/ 21 января 2020

Пробел (~ 1px) снизу - из свойства padding, а пробел (~ 5px) справа - из свойства padding. Так что если вы отключите оба, то вы можете избавиться от фона.

CheckBox graphic = (CheckBox) getGraphic();
graphic.setStyle("-fx-background-color: red;-fx-label-padding:0px;-fx-padding:0px;");
...