我有3列的表格。该表使用CONSTRAINED_RESIZE_POLICY。
用户可以调整所有三列的大小。
当表的宽度增加或减少时,我希望中间列保持与原样相同的宽度(以像素为单位),并且多余的空间可以从其他列中分配(或获取)。与现在发生的基本方式相同。
基本上,我会为表格列提供SplitPane.setResizableWithParent( <child>, false )
功能。
知道怎么做到这一点?
答案 0 :(得分:1)
仅在拖动列时重置最小和最大宽度。这是一个内部类的例子。
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);