Глядя на (сокращенный) стили JavaFX по умолчанию для TextField
объясняют много:
.text-input {
-fx-background-color: linear-gradient(to bottom, derive(-fx-text-box-border, -10%), -fx-text-box-border),
linear-gradient(from 0px 0px to 0px 5px, derive(-fx-control-inner-background, -9%), -fx-control-inner-background);
-fx-background-insets: 0, 1;
-fx-background-radius: 3, 2;
}
Таким образом, фон представляет собой многоуровневый фон, включая границу. Этот метод очень часто используется в JavaFX. Но очень легко изменить только один цвет.
Сначала нам нужно назначить новый пользовательский класс стиля для нашего TextField
:
TextField textField = new TextField();
textField.getStyleClass().add("custom");
и файл CSS:
.custom {
-fx-control-inner-background: orange;
}
Как вы можете видеть, вы не должны переопределить все стили текстового поля, достаточно лишь переопределить цветовую переменную, используемую для фона.
Ого, это расстраивает ... –