Как переопределить JavaFX css кодом для сложных объектов - PullRequest
0 голосов
/ 10 марта 2020

Я использую toggleSwitch в JavaFX из fxControls. Я могу переопределить CSS файлом это свойство:

.toggle-switch:selected .thumb-area {
    -fx-background-color: linear-gradient(to bottom, derive(-fx-text-box-border, -20%), derive(-fx-text-box-border, -30%)), linear-gradient(to bottom, derive(#0b99c9, 30%), #0b99c9);
    -fx-background-insets: 0, 1;
}

Но я хотел бы сделать это с помощью кода, чтобы изменить некоторые цвета в компоненте (например, синий фон в выбранном режиме), но это не не работает:

String css = ".toggle-switch:selected .thumb-area{-fx-background-color: linear-gradient(to bottom, derive(-fx-text-box-border, -20%), derive(-fx-text-box-border, -30%)),linear-gradient(to bottom, derive(#0b99c9, 30%), #0b99c9);-fx-background-insets: 0, 1;}";
toggleSwitch.setStyle(css);

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 10 марта 2020

Я думаю, что вы можете сделать то, что вы пытаетесь достичь, с помощью поиска цвета. В вашем файле CSS выполните:

.root {
  -my-selected-control-color: #0b99c9 ;
}

И затем определите все ваши стили в соответствии с определенным вами искомым цветом:

.toggle-switch:selected .thumb-area{
    -fx-background-color: linear-gradient(to bottom, derive(-fx-text-box-border, -20%), derive(-fx-text-box-border, -30%)),
                            linear-gradient(to bottom, derive(-my-selected-control-color, 30%), -my-selected-control-color);
    -fx-background-insets: 0, 1;

}

Вы можете определить столько эти по мере необходимости.

Теперь у вас есть только одно место для изменения цвета (в файле CSS), если вам нужно. Вы также можете изменить это программно с помощью одной строки кода:

// assume root is the root of the UI
// you can always retrieve this with Node root = anyNode.getScene().getRoot();
// This will change all occurrences of -my-selected-control-color to 
// a bright green:
root.setStyle("-my-selected-control-color: #00b140 ;");

Также см. этот пост .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...