[英]JavaFX TableColumn Graphic not Hiding
我正在为我的TableColumns创建一个自定义标题,该标题是列的标签以及允许用户执行搜索的TextField。 我正在设置列标题,如下所示:
getColumns().addListener(new ListChangeListener<TableColumn<S, ?>>() {
@Override
public void onChanged(final ListChangeListener.Change<? extends TableColumn<S, ?>> change) {
while (change.next()) {
Label label;
TextField search;
VBox graphic;
for (TableColumn<S, ?> column : change.getAddedSubList()) {
label = new Label(column.getText());
search = new TextField();
graphic = new VBox();
graphic.getStyleClass().add("k-column-graphic");
graphic.getChildren().addAll(label, search);
column.setGraphic(graphic);
}
}
}
});
因此列的图形是显示的内容。 我正在使用以下CSS(图形本身有一个“k-column-graphic”CSS类,而TableView有一个“k-table-view”CSS类)
/** Hide default text label in KTableView */
.k-table-view .column-header > .label {
-fx-content-display: graphic-only;
}
.k-column-graphic {
-fx-alignment: center-left;
-fx-spacing: 5;
-fx-padding: 2;
}
这很好用,但我也允许通过启用TableView.setTableMenuButtonVisible(true);
隐藏列TableView.setTableMenuButtonVisible(true);
属性,添加一个按钮以轻松隐藏列。
每当我尝试隐藏列时,它都会成功隐藏,但图形(Label / TextField)仍然存在。 两者似乎都有0或1的宽度,并且非常小,但您仍然可以看到它们。
如何通过CSS或我的代码中的某个地方,将它用于TableColumn的图形节点也将隐藏的位置?
当您切换CheckMenuItem
以显示/隐藏列时,您的自定义控件将不会自动更改其VisibleProperty
的值。 所以你需要做的只是将你自己的控件的VisibleProperty
绑定到TableColumn
的VisibleProperty
。
以下示例基于您的代码。 希望它可以帮助。
getColumns().addListener(new ListChangeListener<TableColumn<S, ?>>() {
@Override
public void onChanged(final ListChangeListener.Change<? extends TableColumn<S, ?>> change) {
while (change.next()) {
Label label;
TextField search;
VBox graphic;
for (TableColumn<S, ?> column : change.getAddedSubList()) {
label = new Label(column.getText());
search = new TextField();
graphic = new VBox();
graphic.getStyleClass().add("k-column-graphic");
graphic.getChildren().addAll(label, search);
column.setGraphic(graphic);
/* ======= add the following two lines ============== */
label.visibleProperty().bind(column.visibleProperty());
search.visibleProperty().bind(column.visibleProperty());
}
}
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.