JavaFX: приложение для стилей с селекторами CSS
у меня есть пара вопросов о стиль приложения JavaFX с селекторами CSS (например: .table-view
для каждого TableView
).
Я создал основной CSS-файл, в котором я хочу Определить универсальные свойства стиля для моего приложения. Например: каждый TableView
получает тот же цвет в каждом экране. Я просто импортирую Main.css
в каждом .css, который связан с a .файл fxml.
теперь я хотел бы стиль каждый HBox
в a 'sidebar' таким же образом. Я пробовал это так (как предложено в документации Oracle):
.sidebar > .hbox {
/* Just some styling */
}
это не работает, к моему удивлению, но следующие куски кода работают:
.sidebar > HBox {
/* Just some styling */
}
.sidebar HBox {
/* Just some styling */
}
это как-то связано с тем, что .sidebar
пользовательский стиль, но я не уверен в этом.
Итак, мои вопросы:
1. Почему первый не работает?
2. Что должно быть как это сделать? (с .hbox
или HBox
и >
или ничего?)
1 ответов
как вы можете видеть в документации CSS HBOX
класса нет класса стиль определен. Поэтому вы не можете просто использовать .hbox
http://docs.oracle.com/javase/8/javafx/api/javafx/scene/doc-files/cssref.html#hbox
если вы хотите искать только прямые дочерние элементы панели инструментов >
знак можно использовать. С помощью >
вход в селектор CSS будет иметь некоторое преимущество в вопросах производительности, потому что, делая это, не полная дочерняя иерархия под Панель управления должна быть отсканирована. Поиск совпадающих узлов будет осуществляться только в первой иерархии дочерних узлов.
так что если вы хотите выбрать все кнопки, которые являются прямыми дочерними боковой панели, вы можете сделать следующее:
. sidebar > .button
но если вы действительно хотите, чтобы все кнопки в боковой панели (даже если они завернуты в листы и т. д.) необходимо использовать следующий селектор:
.sidebar .button
вернемся к вашему вопросу HBOX: даже если HBOX не имеет определенного класса стиля (.hbox) она имеет тип, который может использоваться для выбора типа. Как описано в CSS doc, все узлы имеют тип:
метод Gettypeselector узла возвращает строку, аналогичную Селектор типов CSS. По умолчанию этот метод возвращает простое имя класс. Обратите внимание, что простое имя внутреннего класса или анонимный класс не может использоваться в качестве селектора типов. В таком случае, этот метод следует переопределить, чтобы вернуть значение значение.
из-за этого селектор HBOX работает.