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

Ana*_*wad 4 javafx tableview

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

jew*_*sea 13

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

table.getStylesheets().addAll(getClass().getResource("hidden-tableview-headers.css").toExternalForm());
Run Code Online (Sandbox Code Playgroud)

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

.column-header-background { visibility: hidden; -fx-padding: -1em; }
Run Code Online (Sandbox Code Playgroud)

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


Ana*_*wad 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);
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)