Как программно установить цвет или текстуру метки вкладки в JavaFX?

У меня есть TabPane с несколькими Tab. Если результаты операции в Tab не увенчались успехом, я хочу установить Tab Label в красный цвет Fill или, возможно, хешировать текстуру (для тех, у кого дальтонизм). Я хочу сбросить Color обратно по умолчанию, позже.

Прочитав некоторые из вопросов здесь, можно статически установить его с помощью таблицы стилей.

#MyTabPane .tab *.tab-label {
    -fx-text-fill: white;
}

Как получить доступ к Tab label и динамически установить его цвет/текстуру?

tab.setStyle("??");

ДОПОЛНЕНИЯ ELLTZ

Как можно использовать встроенные стили, указанные выше, для изменения Paint как Label с классом стиля tab-label, так и Button(StackPane) также tab-close-button

необходимы примеры кода


person likejudo    schedule 17.01.2013    source источник


Ответы (1)


Настройка графики и стиля помогли мне:

Tab tabB = new Tab();
tabB.setText("");
tabPane.getTabs().add(tabB);
tabB.setStyle("-fx-border-color:red; -fx-background-color: blue;");
tabB.setGraphic(new Label("Tab B"));
tabB.getGraphic().setStyle("-fx-text-fill: #c4d8de;");
person zhujik    schedule 18.01.2013
comment
Спасибо. Удивительно, но если вы сделаете tab1.setGraphic(imageView), а затем tab2.setGraphic(imageView), графика переключится с tab1 на tab2. Только одна вкладка имеет графику. - person likejudo; 22.02.2013
comment
Это неудивительно, ведь узел всегда может быть только один раз в SceneGraph. Графика — это общий узел в SceneGraph, как и любой другой узел. - person zhujik; 25.02.2013
comment
что заставляет вас задаться вопросом, почему они вообще называют это «графом». Но да, это правда, поэтому неудивительно, что у ImageView может быть только 1 родитель. - person ; 05.01.2016