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。我想保留该选项,因为我的应用程序的主屏幕可以调整大小。如果我使用 unconstrained,则宽度有效,但是当应用程序的主要 window 调整大小时,我失去了自动缩放 TableView 的能力。
有没有人有同样的经历并找到了解决办法?非常感谢您的帮助。
我找到的唯一解决方案是最初设置 minWidth 而不是 prefWidth。然后在显示 UI 后几个脉冲,修复 minWidth 以便列大小调整再次正常工作。
我的代码中有一个 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。我想保留该选项,因为我的应用程序的主屏幕可以调整大小。如果我使用 unconstrained,则宽度有效,但是当应用程序的主要 window 调整大小时,我失去了自动缩放 TableView 的能力。
有没有人有同样的经历并找到了解决办法?非常感谢您的帮助。
我找到的唯一解决方案是最初设置 minWidth 而不是 prefWidth。然后在显示 UI 后几个脉冲,修复 minWidth 以便列大小调整再次正常工作。