我正在尝试开发自动完整文本,其中显示了tableview弹出窗口中的建议下拉列表,我遇到了如何在javafx 2.1中隐藏tableview的整个标题列的问题
答案 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");