-
-fx-pref-width
устанавливает свойство TableColumnHeader
(то же самое для -fx-min-width
, см. Ниже). Установка этого свойства с помощью CSS глючит: JDK-8087822 .
- Вы можете использовать как
fx:id
, так и id
. Если вы установите только fx:id
, он также будет использоваться для id
. Если вы установите оба параметра, id
используется для CSS, а fx:id
используется для внедрения экземпляра в контроллер.
- Вы бы добавили класс стилей, если хотите одинаково стилизовать множество узлов.
Примечание. Следующее в основном касается деталей реализации JavaFX 11.0.1 (по крайней мере, я не смог найти документацию).
Проблема заключается в разнице между TableColumnBase.minWidth
и Region.minWidth
. Первый не подходит для CSS, потому что это не StyleableProperty
. Последнее и именно это свойство определяют CSS-свойство -fx-min-width
.
Когда вы делаете:
<TableColumn id="tableColumnVertical" text="" minWidth="40" maxWidth="40">
Вы устанавливаете свойство minWidth
для TableColumn
, используя установщик свойства . Это не аналогично настройке свойства CSS.
Тем не менее, Справочное руководство по JavaFX CSS делает документ , который TableColumn
является частью подструктуры TableView
. Это может указывать на то, что вы можете стилизовать столбец с помощью CSS Но опять же, ни один из свойств на самом деле не является стилем; метод getCssMetaData()
возвращает Collections.emptyList()
.
TableColumnBase
реализует Styleable
(откуда взято getCssMetaData()
), что означает, что он имеет следующий метод: getStyleableNode()
. Реализация этого метода TableColumn
после отображения TableView
возвращает экземпляр TableColumnHeader
. Это означает, что любой CSS, примененный к TableColumn
, является на самом деле , примененным к TableColumnHeader
. Именно этот последний класс расширяет Region
и, таким образом, обладает свойством styleable minWidth
. А из некоторых тестов свойство minWidth
экземпляра TableColumnHeader
установлено как ожидалось.
Проблема заключается в том, что minWidth
из TableColumnHeader
не влияет на TableColumn
. Реализация принимает во внимание только TableColumn.minWidth
. И это, к сожалению, означает, что вы не сможете установить minWidth
из TableColumn
из CSS.
Такое поведение может быть ошибкой.