5

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

4

3 回答 3

14

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

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;

于 2012-09-07T20:15:06.497 回答
5

解决方法很简单;在 tableview 渲染后,我们可以获取 table header 并使其不可见,因此 table view 布局更改时 table header 不必重新布局。为了捕捉表格渲染完成,我们可以使用宽度属性更改,并隐藏表格标题

这是代码:

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);
            }
        }
    });
于 2012-09-17T18:31:44.800 回答
0

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

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

.hide-header您应该添加到 java 代码中的随机名称在哪里:

table.getStyleClass().add("hide-header");
于 2016-07-07T14:36:17.840 回答