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