微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

TableColumn prefWidth

如何解决TableColumn prefWidth

我的代码中有一个TableView,当应用程序关闭时(值保存到属性文件中),我将为此保存每个TableColumn的索引和宽度。当我再次启动应用程序时,我想将每个TableColumns的索引和宽度重新设置为关闭应用程序时的状态。

        // If all columns are kNown,reorder the columns and set the width
        if (allKNown) {
            ObservableList<TableColumn<T,?>> columns = FXCollections.observableArrayList();

            // Column order and width
            TableColumn<T,?> column;
            for (int i = 0; i < colIndex.length; i++) {
                column = getoriginalColumns().get(colIndex[i]);
                column.setPrefWidth(colWidths[i]);
                columns.add(column);
            }
            getTableView().getColumns().setAll(columns);
        }
        getTableView().setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);

设置索引可以正常工作,该列设置在TableView的正确位置。但是,这不适用于列的prefWidth(所有列都可调整大小)。我看过不同的论坛,而罪魁祸首似乎是CONSTRAINED_RESIZE_POLICY。我想保留该选项,因为可以调整应用程序的主屏幕大小。如果我使用不受限制的格式,那么宽度是可行的,但是当应用程序的主窗口调整大小时,我将失去自动缩放TableView的功能

有人经历过同样的事情并找到了解决方案吗?非常感谢您的帮助。

解决方法

我发现的唯一解决方案是最初设置minWidth而不是prefWidth。然后在显示用户界面后几个脉冲,请修复minWidth,以便列调整大小再次正常工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。