我的代码中有一个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的能力。
有没有人有过同样的经历并找到了解决方案?非常感谢您的帮助。
发布于 2020-11-11 03:57:11
我找到的唯一解决方案是最初设置minWidth而不是prefWidth。然后,在显示UI后的几个脉冲,修复minWidth,以便列大小调整再次正常工作。
https://stackoverflow.com/questions/64747452
复制相似问题