Я попытался реализовать другую окраску своего TreeTableView, так как есть DummyElements, которые нужно визуально отделить от других элементов. Поскольку они по-прежнему доступны для редактирования и т. д., При их выборе также должен быть определенный стиль. Я попробовал следующее:
.tree-table-row-cell:selected .text {
-fx-fill: white ;
}
.tree-table-row-cell .tree-table-cell:selected {
-fx-background-color: grey
}
.tree-table-cell .text {
-fx-fill: black ;
}
.tree-table-cell {
-fx-background-color: gainsboro
}
I dont know why, but the text color changes but the backgroundcolor doesnt. Why is this?




Хорошо, как всегда, когда я публикую что-то здесь, на SO, я нахожу ответ вскоре после этого, но, поскольку это не очень интуитивно понятно, я хотел поделиться решением.
.tree-table-row-cell:selected .text {
-fx-fill: white ;
}
.tree-table-row-cell:selected .tree-table-cell {
-fx-background-color: grey
}
.tree-table-cell .text {
-fx-fill: black ;
}
.tree-table-cell {
-fx-background-color: gainsboro
}
Вы хотите изменить свойство fx-background-color для tree-table-cell псевдокласса tree-table-row-cell:selected.
Вы, НЕ, хотите изменить свойство fx-background-color псевдокласса tree-table-cell:selected, поскольку он не существует (afaik).
Дело в том, что именование всех классов в javaFX немного странно ...
Я мог бы протестировать сдвиг псевдокласса ": selected" на один уровень выше раньше, если бы он не назывался tree-table-row-cell. Что это? Ряд или ячейка? Для меня не совсем интуитивно иметь два взаимоисключающих слова в идентификаторе класса. Я признаю, что отсутствие подробных руководств - тоже проблема. Я видел сотни руководств «как изменить цвет кнопки», но мало руководств с подробным объяснением концепции стиля или архитектуры javaFX. Примечание: я даже не знал, что существует два разных режима выбора.
Это экземпляр TreeTableRow, который является подклассом Cell, поэтому в самом реальном смысле это и строка, и ячейка (именно Cell отвечает за отображение всей строки).
Что ж ... тогда в этом есть смысл. Я новичок в JavaFX. Не будь со мной слишком суров, пожалуйста. Есть ли где-нибудь в Интернете более подробное руководство?
Я только что узнал, прочитав стандартный Учебник Oracle (что не очень хорошо) и Javadocs. Кроме того, я думаю, глядя на код на этом сайте, несколько хороших репозиториев GitHub (Попробуй это) и глядя на исходный код для самого JavaFX и некоторых библиотек, таких как RichTextFX и форсаж.
Почему это не интуитивно понятно? Предположительно, вы находитесь в «режиме выбора строк» (по умолчанию), поэтому выбираются строки, а не ячейки. Если вы включить выбор ячейки, тогда ячейки будут узлами, которые были выбраны.