JavaFX 2自动列宽

wob*_*ogs 43 javafx-2

我有一个显示人员联系方式的JavaFX 2表,让我们想象有三列:名字,姓氏和电子邮件地址.当我的应用程序启动时,它会在表格中填入几行有关系统中已有人员的数据.

问题是列宽都是一样的.大多数情况下,名字和姓氏都会完整显示,但电子邮件地址会被剪裁.用户可以双击标题中的分隔符来调整列的大小,但这将很快变得乏味.

一旦预先填充了表,我想以编程方式调整所有列的大小以显示它们包含的数据,但我无法弄清楚如何实现这一点.我可以看到我可以打电话,col.setPrefWidth(x)但这并没有真正帮助,因为我必须猜测宽度.

Ulu*_*Biy 71

如果您的总列数是预先知道的.您可以在tableview的宽度中分配列宽:

nameCol.prefWidthProperty().bind(personTable.widthProperty().divide(4)); // w * 1/4
surnameCol.prefWidthProperty().bind(personTable.widthProperty().divide(2)); // w * 1/2
emailCol.prefWidthProperty().bind(personTable.widthProperty().divide(4)); // w * 1/4
Run Code Online (Sandbox Code Playgroud)

在此代码中,当调整tableview的大小时,列的宽度比例保持同步,因此您无需手动执行此操作.另外,surnameCol采取的tableview宽度的一半空间.


Ren*_*pel 14

这在JavaFX 8中适用于我

table.setColumnResizePolicy( TableView.CONSTRAINED_RESIZE_POLICY );
col1.setMaxWidth( 1f * Integer.MAX_VALUE * 50 ); // 50% width
col2.setMaxWidth( 1f * Integer.MAX_VALUE * 30 ); // 30% width
col3.setMaxWidth( 1f * Integer.MAX_VALUE * 20 ); // 20% width
Run Code Online (Sandbox Code Playgroud)

在其他示例中,您遇到问题,将忽略垂直滚动条宽度.