我有3列的表。该表使用CONSTRAINED_RESIZE_POLICY。JavaFX - 停止表格列从父母调整大小
所有三列可以由用户调整大小。
当表格的宽度增加或减少时,我希望中间列保持与原来相同的宽度(以像素为单位),并且多余的空间要从同一基本的其他列分配(或取用)现在发生的方式。
基本上,我会SplitPane.setResizableWithParent(<child>, false)
功能的表列。
任何想法如何做到这一点?
我有3列的表。该表使用CONSTRAINED_RESIZE_POLICY。JavaFX - 停止表格列从父母调整大小
所有三列可以由用户调整大小。
当表格的宽度增加或减少时,我希望中间列保持与原来相同的宽度(以像素为单位),并且多余的空间要从同一基本的其他列分配(或取用)现在发生的方式。
基本上,我会SplitPane.setResizableWithParent(<child>, false)
功能的表列。
任何想法如何做到这一点?
如何在拖动列时重置最小和最大宽度。这是一个内部类的例子。
class CustomResizePolicy implements Callback<TableView.ResizeFeatures, Boolean> {
static final double DEFAULT_MIN_WIDTH = 10.0F, DEFAULT_MAX_WIDTH = 5000.0F;
@Override
public Boolean call(TableView.ResizeFeatures feature) {
final TableColumn<?,?> c = feature.getColumn();
if (c == column2) {
c.setMinWidth(DEFAULT_MIN_WIDTH);
c.setMaxWidth(DEFAULT_MAX_WIDTH);
}
boolean result = TableView.CONSTRAINED_RESIZE_POLICY.call(feature);
if (c == column2) {
c.setMinWidth(c.getWidth());
c.setMaxWidth(c.getWidth());
}
return result;
}
}
和
tableView.setColumnResizePolicy(new CustomResizePolicy());
column2.setMaxWidth(200); // Need to fix column2's width in this case
column2.setMinWidth(200);
column1.setMaxWidth(5000); // Divide left margin with a ratio of 1:2
column3.setMaxWidth(10000);
我想你可以设置该列的最小和最大宽度。 – Sedrick
@SedrickJefferson:如果我这样做,用户将无法调整列的大小。 – JoshuaD