TableView如何获取列的背景颜色

时间:2016-05-15 18:44:45

标签: javafx javafx-8

在Swing中,JTable.getTableHeader().getBackground()生成Color(包含列标题的颜色)。

在TableView的Javafx中是否存在等价物?

1 个答案:

答案 0 :(得分:0)

  

在TableView的Javafx中是否存在等价物?

不幸的是,JavaFX没有提供相当于getTableHeader().getBackground()

的内置方法

但是.....你仍然可以通过臭名昭着的node lookup

访问它

使用此方法,您可以获得Region的不同TableView,这可以让您操纵它们。

重要的是要注意,如果CSS尚未应用于Scene,则查找将返回null,这通常在呈现之前不会发生。有解决方法,但它们并非全部保证,例如:

  • 通过applyCSS
  • 尽早强制应用CSS
  • primaryStage.show();
  • 之后执行操作
  • 向正在呈现时修改的属性添加侦听器,例如BoundsInParentProperty并在那里执行操作

如果遇到这个问题,有几个不同的答案和解决方法可以在SO上找到它

下图显示了可用于执行此操作的选择器:

enter image description here

您感兴趣的部分是标题,我使用以下内容设置背景:

Set<Node> tableColumnHeaders = tableView.lookupAll(".column-header");
for(Node columnHeader : tableColumnHeaders){
    if(columnHeader instanceof Region){
        ((Region)columnHeader).setBackground(
                new Background(new BackgroundFill(Color.GREEN, CornerRadii.EMPTY, Insets.EMPTY)));
    }
}

在这个逻辑中你可以获得有关背景的信息,但是正如fabian在评论中建议的那样,你应该知道背景可能并不总是一种颜色