JavaFx如何在tableview中只对齐一个列标题?

DOM*_*DOM 4 java javafx javafx-8 javafx-css

如何在tableview中只对齐一列的标题?
以下css对齐所有列标题,但我想只对齐一列:

.table-view .column-header .label{
    -fx-alignment:CENTER
}
Run Code Online (Sandbox Code Playgroud)

voi*_*256 13

您现在可以使用最新版本的JavaFX执行此操作.

Java 1.7

这适用于Java:1.7.0_45/JavaFX:2.2.45-b18).它应该是最新版本,因为它需要RT-14909

列标题将自动获得与TableColumn相同的"Id"!因此,您的TableColumn需要一个(CSS-)Id,您可以直接在Scenebuilder中为TableColumn设置或使用某些代码tableColumn.setId("my-special-column").

然后,您可以使用Id直接设置列标题的样式:

.table-view .column-header#my-special-column .label {
  -fx-alignment: CENTER_RIGHT;
  -fx-text-fill: red;
}
Run Code Online (Sandbox Code Playgroud)

PS:这让我有点令人沮丧的1.5小时才弄明白.希望这有助于其他人吧!

Java 8

由于我不理解的原因,id技巧不再适用于Java 8.但是,我们可以做的是直接为列设置styleClass(内部传播到TableColumnHeader)并在css文件中更改此styleClass:

在Java中:

firstNameCol.getStyleClass().add("my-special-column-style");
Run Code Online (Sandbox Code Playgroud)

在CSS中:

.my-special-column-style .label {
  -fx-alignment: CENTER_RIGHT;
  -fx-text-fill: red;
}
Run Code Online (Sandbox Code Playgroud)

适用于Mac OS X上的jdk1.8.0_05.