Как я могу изменить класс Java FX стиля узла CSS во время выполнения? - PullRequest
1 голос
/ 01 апреля 2020

У меня есть файл стиля. css, который содержит такие стили, как:

.tab{
    -fx-background-color:rgb(15,63,103);
    ... etc ...
}

.selectedTab{
    -fx-background-color:rgb(52,105,155);
    ... etc ...
}

Я пытаюсь изменить css кнопки во время выполнения, когда выполняются определенные условия.

Я знаю, что вы можете установить стиль, набрав css inline с:

mBtn.setStyle("-fx-background-color:rgb(15,63,103);");

Хотя мне это кажется менее чистым, чем ссылки на стили в файле. css.

Поэтому я установил свои кнопки CSS изначально, используя:

newBtn.getStylesheets().add(getClass().getResource("styles.css").toExternalForm());
newBtn.getStyleClass().add("tab");

Но потом, когда я попытаюсь изменить его, используя:

mBtn.getStyleClass().removeAll();
mBtn.getStyleClass().add("selectedTab");

, это не изменится. Нужно ли обновлять / перерисовывать узел после изменения его стиля?

Кроме того, как правило, каков предпочтительный способ установки стилей в JavaFX. Это с setStyle ("..."); метод или это, связав его с таблицей стилей, или это третий способ, который я не рассмотрел.

Спасибо за ваше время:)

Редактировать: Решено пользователем Фабиан с первым комментарием. Проблема заключалась в том, что removeAll () - это метод, который удаляет все элементы, указанные в качестве аргументов. На самом деле я собирался использовать функцию clear ().

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