首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaFX TableColumn图形未隐藏

JavaFX TableColumn图形未隐藏
EN

Stack Overflow用户
提问于 2013-10-30 05:09:09
回答 1查看 1.2K关注 0票数 3

我正在为我的TableColumns创建一个自定义标题,它是列的标签,外加一个允许用户执行搜索的TextField。我将列标题设置如下:

代码语言:javascript
复制
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类)

代码语言:javascript
复制
/** 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);属性来隐藏列,该属性添加了一个按钮来方便地隐藏列。

每当我试图隐藏一列时,它都会成功隐藏,但图形(标签/TextField)仍然保留。两者的宽度似乎都是0或1,而且都很小,但您仍然可以看到它们。

如何通过CSS或我的代码中的某处,使TableColumn的图形节点也隐藏在哪里?

EN

回答 1

Stack Overflow用户

发布于 2014-08-24 11:25:35

当您切换CheckMenuItem以显示/隐藏该列时,您的自定义控件不会自动更改它们的VisibleProperty值。因此,您需要做的只是将您自己控件的VisibleProperty绑定到TableColumnVisibleProperty

以下示例基于您的代码。希望能有所帮助。

代码语言:javascript
复制
    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());
                }
            }
        }
    });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19669166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档