Где я могу найти полную официальную ссылку на JavaFX CSS? - PullRequest
2 голосов
/ 19 июня 2020

Когда я хочу изменить цвет фона моей TextArea в JavaFX (с CSS), многие люди рекомендуют "-fx-control-inner-background". Но когда я смотрю на Oracle CSS ссылку , нет такой вещи, как "-fx-control-inner-background"! Фактически, нигде, в Inte rnet я мог найти ссылку на это, и тем не менее это работает !

Мой вопрос: где эти люди находят эту информацию? Почему, например, вместо него не работает -fx-background-color?

Ответы [ 2 ]

2 голосов
/ 19 июня 2020

Обратите внимание, что -fx-control-inner-background - это не свойство CSS, а «искомый цвет» (по сути, переменная CSS), который определен в таблице стилей по умолчанию, modena.css.

Насколько мне известно, нет официальной документации, описывающей искомые цвета, используемые modena. Единственный известный мне ресурс для их поиска - это исходный код , в котором довольно тщательно документируется назначение и использование этих переменных.

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

  • Дизайн modena. css совершенно ясно дает понять, что намерение заключается в том, что искомые цвета, определенные в нем, являются предназначены для облегчения тематизации приложения и поэтому написаны как API
  • Использование этих искомых цветов широко используется в сообществе программистов JavaFX и удаляется из модены. css в следующей версии нарушит большую часть кода и встретит существенное сопротивление со стороны сообщества. Таким образом, они образуют «де-факто API».
  • Вызов

    setUserAgentStylesheet(Application.STYLESHEET_MODENA);
    

    в подклассе Application гарантирует, что modena будет использоваться в качестве таблицы стилей по умолчанию, поэтому, если для будущих выпусков JavaFX будет определена новая таблица стилей по умолчанию, этот код защитит ваше приложение в будущем в соответствии с предположением «API де-факто» в предыдущем пункте. (Обратите внимание, что это также дает команде JavaFX возможность создать новую таблицу стилей без нарушения существующего кода, что, как мне кажется, усиливает аргумент «API де-факто».)

Итак, баланс, я думаю, полагаясь на найденные цвета, которые вы можете найти в модене. css исходный код - безопасный подход.

1 голос
/ 19 июня 2020

Я, наконец, обнаружил кое-что полезное, что меняет мое понимание F XML CSS.

Согласно этой ссылке , каждый узел в графе сцены может иметь подконструкции . Например, в нашем случае TextArea имеет подструктуру под названием content . Мы должны стремиться изменить именно этот контент, а не все текстовое поле. В данном случае:

.text-area .content {-fx-background-color: red; }

у меня отлично работает. Другими словами, у нас есть регион (называемый контент ), нарисованный на основном узле (textarea).

Это также показывает, почему многие люди получат только, например, красная граница, когда они пытаются изменить фон текстовой области на красный. Это потому, что эта узкая граница - единственная часть ниже содержимого , видимого нам.

Надеюсь, это поможет ...

...