如何javafx隐藏tableview的背景标题?

时间:2012-09-07 19:47:12

标签: tableview javafx

我正在尝试开发自动完整文本,其中显示了tableview弹出窗口中的建议下拉列表,我遇到了如何在javafx 2.1中隐藏tableview的整个标题列的问题

3 个答案:

答案 0 :(得分:13)

将自定义样式表应用于表格:

table.getStylesheets().addAll(getClass().getResource("hidden-tableview-headers.css").toExternalForm());

文件hidden-tableview-headers.css放置在与加载css资源的类相同的位置并包含以下行:

.column-header-background { visibility: hidden; -fx-padding: -1em; }

visibility: hidden属性告诉JavaFX不要绘制节点,但仍留有标题所在的空间。由于标题是1行文本高度高,您可以通过设置-fx-padding: -1em;来告诉不可见标题不占用任何空格。

答案 1 :(得分:5)

解决方案非常简单;在tableview呈现之后,我们可以获取表头并使其不可见,因此当表视图布局更改时,表头不必重新布局。 为了捕获表呈现,我们可以使用width属性更改,并隐藏表头

以下是代码:

tableView.widthProperty().addListener(new ChangeListener<Number>() {
        @Override
        public void changed(ObservableValue<? extends Number> ov, Number t, Number t1) {
            // Get the table header
            Pane header = (Pane)tableView.lookup("TableHeaderRow");
            if(header!=null && header.isVisible()) {
              header.setMaxHeight(0);
              header.setMinHeight(0);
              header.setPrefHeight(0);
              header.setVisible(false);
              header.setManaged(false);
            }
        }
    });

答案 2 :(得分:0)

如果您不想添加其他.css文件,可以使用现有的css:

.hide-header .column-header-background { 
    visibility: hidden; -fx-padding: -1em;
}

其中.hide-header是您应添加到java代码中的随机名称:

table.getStyleClass().add("hide-header");