2017-05-04 38 views
1

我有一个三列的表,我想确保列的总宽度等于表的宽度,所以我使用CONSTRAINED_RESIZE_POLICY。可调整列上的JavaFX TableColumn setPreferredWidth

我希望列以我指定的宽度开始,但可以由用户修改。

如果我这样做:

albumTable.setColumnResizePolicy (TableView.CONSTRAINED_RESIZE_POLICY); 
artistColumn.prefWidthProperty().bind(albumTable.widthProperty().multiply(0.4)); 
yearColumn.prefWidthProperty().bind(albumTable.widthProperty().multiply(0.2)); 
albumColumn.prefWidthProperty().bind(albumTable.widthProperty().multiply(0.4)); 
artistColumn.setResizable(false); 
yearColumn.setResizable(false); 
albumColumn.setResizable(false); 

列的大小,因为我想:

good

但是,如果我改变setResizable()true,则列全部变成大小相同:

bad

有关如何解决此问题的任何建议?

将首选宽度的设置简化为类似column.setPreferredWidth (200)的内容没有任何区别。宽度总是在所有列之间均匀分配。

有没有什么办法来设置列的首选宽度(或实际宽度),同时仍然允许用户调整这些列的大小?

回答

1

看来,CONSTRAINED_RESIZE_POLICY开始与列的最大宽度的比例。以4:2:4的比例开始,

tableView.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY); 
column1.setResizable(true); 
column2.setResizable(true); 
column3.setResizable(true); 
column1.setMaxWidth(40000); 
column2.setMaxWidth(20000); 
column3.setMaxWidth(40000); 

这种方法可以解决刚要收音机时的问题。

+0

这应该足够满足我的需求。我会测试它,并让你知道它是否工作!谢谢。 – JoshuaD

相关问题