Java 8 JavaFX – Как установить цвет текста заголовка одной вкладки

У меня есть пользовательский интерфейс, размещенный в файле .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 по причинам, которые я не контролирую.

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

jewelsea 26.04.2024 21:45
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
1
79
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Используйте файл CSS и свяжите его с макетом FXML. Вы можете проверить этот ответ Как добавить таблицу стилей CSS в FXML.

В CSS вы можете добавить следующее для оформления цвета метки:

.tab .tab-label {
-fx-text-fill: red;
}

Это не работает для меня. Для контекста у меня уже есть внешний CSS-файл, связанный программно, например: scene.getStylesheets().add(getClass().getResource("applicati‌​on.css").toExternalF‌​orm()); Это точно то же самое, что и второй ответ, и он работает для других вещей, которые я стилизую. Однако текст выглядит не красным, а черным.

chilliefiber 27.04.2024 20:21

Я также пытался связать это, как в первом ответе, но текст снова не красный. Что касается CSS, я попробовал и .tab-name .tab-label, и .tab .tab-name, но это не сработало.

chilliefiber 27.04.2024 20:24

Ой, ладно, я попробовал ответить еще раз и понял, что вы отвечаете на другой вопрос. Как я уже сказал в вопросе: «Я хочу установить красный цвет одной вкладки». Вы устанавливаете красный цвет текста на всех вкладках.

chilliefiber 27.04.2024 20:27
Ответ принят как подходящий

Я обнаружил, что это работает следующим образом: В моем .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;
}

Вам следует немного обновить заголовок, чтобы четко указать, что требуется сделать одну вкладку красной из многих. Пожалуйста, также примите ваш ответ, чтобы показать, что это рабочий подход.

Anuj 28.04.2024 08:41

Готово @AKSingh, спасибо! Я пока не могу принять свой ответ

chilliefiber 28.04.2024 17:45

Другие вопросы по теме