У меня есть пользовательский интерфейс, размещенный в файле .fxml, затем у меня есть .css, который я использую для определения стилей, и контроллер JavaFX, расширяющий AnchorPane.
В общем, стилизовать что-то несложно, но заголовки вкладок явно не определены в .fxml, и я, похоже, не могу это стилизовать. Я хочу установить красный цвет одной вкладки.
Вот подходы, которые я пробовал:
1- Установка стиля непосредственно в .fxml:
<Tab fx:id = "tabRed" text = "Tab 2" style = "-fx-text-fill: red;">
<content>
<AnchorPane minHeight = "0" minWidth = "0" prefHeight = "100" prefWidth = "100"/>
</content>
</Tab>
2- Настройка стиля в контроллере
// an attribute of my Controller class
@FXML public Tab tabRed;
// inside the constructor of said Controller
tabRed.setStyle("-fx-text-fill: red;");
Обратите внимание, что я должен использовать эти версии Java/JavaFX по причинам, которые я не контролирую.
Используйте файл CSS и свяжите его с макетом FXML. Вы можете проверить этот ответ Как добавить таблицу стилей CSS в FXML.
В CSS вы можете добавить следующее для оформления цвета метки:
.tab .tab-label {
-fx-text-fill: red;
}
Это не работает для меня. Для контекста у меня уже есть внешний CSS-файл, связанный программно, например: scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
Это точно то же самое, что и второй ответ, и он работает для других вещей, которые я стилизую. Однако текст выглядит не красным, а черным.
Я также пытался связать это, как в первом ответе, но текст снова не красный. Что касается CSS, я попробовал и .tab-name .tab-label
, и .tab .tab-name
, но это не сработало.
Ой, ладно, я попробовал ответить еще раз и понял, что вы отвечаете на другой вопрос. Как я уже сказал в вопросе: «Я хочу установить красный цвет одной вкладки». Вы устанавливаете красный цвет текста на всех вкладках.
Я обнаружил, что это работает следующим образом:
В моем .fxml
<Tab fx:id = "tabRed" text = "Tab 2" styleClass = "red-tab">
<content>
<AnchorPane minHeight = "0" minWidth = "0" prefHeight = "100" prefWidth = "100"/>
</content>
</Tab>
В моем .css
.red-tab .tab-label{
-fx-text-fill: red;
}
Вам следует немного обновить заголовок, чтобы четко указать, что требуется сделать одну вкладку красной из многих. Пожалуйста, также примите ваш ответ, чтобы показать, что это рабочий подход.
Готово @AKSingh, спасибо! Я пока не могу принять свой ответ
Правило стиля по умолчанию для заголовков вкладок находится в modena.css . Переопределите его в своей собственной таблице стилей. Не используйте встроенный вызов
setStyle
, посколькуsetStyle
не способен определять правила с помощью селекторов. Подструктура, используемая для определения селекторов, также описана в ссылке css.