Layout JavaFX:强制TableView中的单个列宽

Layout JavaFX:强制TableView中的单个列宽,layout,javafx,width,tableview,Layout,Javafx,Width,Tableview,如何在TableView中强制使用单个列宽 假设我有一个按钮,可以将所有列的宽度重置为预定义值。我的TableView配置为具有无约束的调整大小策略。现在,如果我手动调整两列的大小,然后点击重置按钮,什么也不会发生 我正在使用setPrefWidth设置首选列宽。我甚至检查了前后的值,它会根据需要更改。但是,视觉表示保持不变。是否有可能将实际列的大小调整为所需的宽度?我可以告诉我的表重新布局、更新或重新绘制吗 JavaFX是否提供了诸如SWT中的pack之类的功能来强制组件调整到其首选宽度/高度

如何在TableView中强制使用单个列宽

假设我有一个按钮,可以将所有列的宽度重置为预定义值。我的TableView配置为具有无约束的调整大小策略。现在,如果我手动调整两列的大小,然后点击重置按钮,什么也不会发生

我正在使用setPrefWidth设置首选列宽。我甚至检查了前后的值,它会根据需要更改。但是,视觉表示保持不变。是否有可能将实际列的大小调整为所需的宽度?我可以告诉我的表重新布局、更新或重新绘制吗


JavaFX是否提供了诸如SWT中的pack之类的功能来强制组件调整到其首选宽度/高度?

尝试将列宽绑定到表的列宽:

col1.prefWidthProperty().bind(col1.getTableView().widthProperty().multiply(1.5).divide(2));
col2.prefWidthProperty().bind(col2.getTableView().widthProperty().multiply(0.5).divide(2));

我无法将列宽设置为固定值,例如300。您可以设置prefWidth,但列的容器(在本例中为tableView)是确定列宽度的容器。它试图为每一列指定其首选宽度,但并不总是成功。无论如何,请尽量避免在tableView中使用固定大小的列,因为这是一种糟糕的做法。我不希望该列具有固定的宽度,我只想将其设置为特定的宽度。之后用户仍然可以调整其大小。但不幸的是,没有直接生效的setWidth方法。它只是min、max和pref,JavaFX将它们混合在一起,最终做了一些不可预测的事情-