2014-12-30 3 views
8

Я пытаюсь изменить цвет фона моего TextField «colorBox0» на «value0», но он избавится от границы.
Вот упрощенная версия моего кода:Как изменить цвет фона TextField без изменения границы в javafx?

static Paint value0 = Paint.valueOf("FFFFFF"); 
    TextField colorBox0; 
    colorBox0.setBackground(new Background(new BackgroundFill(value0, CornerRadii.EMPTY, Insets.EMPTY))); 

Любая помощь очень ценится
Thankyou

+0

Ого, это расстраивает ... –

ответ

11

Я обнаружил, что вы можете построить строку CSS кода из строки и переменный, используя для метода строки и метод подстроки так:

colorBox0 
.setStyle("-fx-control-inner-background: #"+value0.toString().substring(2)); 
2

Попробуйте установить цвет с помощью CSS:

TextField colorBox0; 
colorBox0.setStyle("-fx-background-color: white;"); 
+2

Это не работает. Он также меняет границы. Для всех, кто найдет этот ответ. –

+0

Как выяснил OP, использование '-fx-control-inner-background' вместо' -fx-background-color' работает. –

6

Глядя на (сокращенный) стили 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; 
} 

Как вы можете видеть, вы не должны переопределить все стили текстового поля, достаточно лишь переопределить цветовую переменную, используемую для фона.

+0

Есть ли способ установить цвет фона на значение value0, потому что я хочу иметь возможность изменять значение0 и, в свою очередь, менять цвет фона – sazzy4o

+0

Программно изменяя это, сбрасываются все цвета фона. Но вы также можете изменять цвета через CSS во время выполнения. Например, изменив класс стиля или состояние псевдокласса. – eckig

+1

Я использовал измененную версию вашего css, чтобы исправить ее – sazzy4o

Смежные вопросы