我想在重启javaFX应用程序后恢复TableView中每列的列宽。 因此,我读了一篇描述如何实现这一目标的文章。不幸的是,代码对我不起作用。重新启动后,列不会调整大小。 (但宽度和prefWidth的值确实正确改变了)
Article - How to remember the width of TableColumns
我已经做了一些阅读,但无法解决这个问题:
我的表的调整大小策略设置为CONSTRAINED_RESIZE_POLICY,这似乎是问题所在。如果我切换到UNCONSTRAINED_RESIZE_POLICY,则会调整列的大小。但是,当我想要在用户更改列宽时不会消失列时,我想继续使用受约束的调整大小策略。
非常感谢任何帮助。提前谢谢了。
答案 0 :(得分:0)
这是一个古老的问题,目前尚不清楚要问什么,但是我在设置prefWidth
的{{1}}时遇到了类似的问题(我想),这是行不通的。因此,我查看了JavaFX代码,发现prefWidth的处理方式如下:
TableColumn
因此,我意识到未调用private final DoubleProperty prefWidth = new SimpleDoubleProperty(this, "prefWidth", DEFAULT_WIDTH) {
@Override protected void invalidated() {
doSetWidth(getPrefWidth());
}
};
方法是因为宽度已更改,但prefWidth并未更改。例如,当用户手动调整列大小时会发生这种情况。
只需侦听width属性并设置prefWidth即可修复它,如下所示:
doSetWidth