使JavaFX表格视图中的最后一列占据剩余空间

使JavaFX表格视图中的最后一列占据剩余空间,java,javafx,javafx-8,Java,Javafx,Javafx 8,如何使JavaFXTableView中的最后一列占用剩余空间 我尝试了table.setColumnResizePolicy(TableView.constrated\u RESIZE\u策略)但这会使列大小相等。当窗口宽度增加时,我只希望最后一列增加。如果希望tableview中的所有列填满tableview可用的窗口空间,并动态调整大小以调整窗口大小,则需要将列属性绑定到tableview的宽度 例如,假设我在tableview中有5列。我希望它们始终是可用宽度的固定百分比(以便在调整窗口大

如何使JavaFXTableView中的最后一列占用剩余空间


我尝试了
table.setColumnResizePolicy(TableView.constrated\u RESIZE\u策略)但这会使列大小相等。当窗口宽度增加时,我只希望最后一列增加。

如果希望tableview中的所有列填满tableview可用的窗口空间,并动态调整大小以调整窗口大小,则需要将列属性绑定到tableview的宽度

例如,假设我在tableview中有5列。我希望它们始终是可用宽度的固定百分比(以便在调整窗口大小时,列的比例保持不变)。您可以使用相同的属性绑定习惯用法轻松地形成自己的列大小调整规则(例如,我希望最后一列占用所有剩余空间)

在具有TableView控件的控制器的initialize()方法中,我可以执行以下操作:

void initialize() {


    // Initialize your logic here: all @FXML variables will have been injected
    :
    :
    // TableView column control variables are prefixed with "tco"
    tcoLast.setCellValueFactory(new PropertyValueFactory<Client.Expand, String>("lastName"));
    tcoFirst.setCellValueFactory(new PropertyValueFactory<Client.Expand, String>("firstName"));
    tcoDoB.setCellValueFactory(new PropertyValueFactory<Client.Expand, Integer>("doB"));
    tcoMRN.setCellValueFactory(new PropertyValueFactory<Client.Expand, String>("defMRN"));
    tcoGen.setCellValueFactory(new PropertyValueFactory<Client.Expand, String>("gender"));

    // Cell factories for rendering certain columns in the TableView
    tcoLast.setCellFactory(new ClientNameTableCellFactory());
    tcoFirst.setCellFactory(new ClientNameTableCellFactory());
    tcoDoB.setCellFactory(new ClientDoBTableCellFactory());

    // Set fixed column widths that resize automatically
    // Values are weighted to be a fraction of a total of 41 (arbitrary)        
    tcoLast.prefWidthProperty().bind(tbvMatches.widthProperty().multiply(11.0/41.0));
    tcoFirst.prefWidthProperty().bind(tbvMatches.widthProperty().multiply(11.0/41.0));
    tcoDoB.prefWidthProperty().bind(tbvMatches.widthProperty().multiply(8.0/41.0));
    tcoMRN.prefWidthProperty().bind(tbvMatches.widthProperty().multiply(8.0/41.0));
    tcoGen.prefWidthProperty().bind(tbvMatches.widthProperty().multiply(2.0/41.0));
    :
    :
}
void initialize(){
//在此处初始化逻辑:所有@FXML变量都将被注入
:
:
//TableView列控制变量的前缀为“tco”
tcoLast.setCellValueFactory(新属性ValueFactory(“lastName”);
tcoFirst.setCellValueFactory(新属性ValueFactory(“名字”);
tcoDoB.setCellValueFactory(新属性值工厂(“doB”);
tcoMRN.setCellValueFactory(新属性值工厂(“defMRN”);
t生成setCellValueFactory(新属性值工厂(“性别”);
//用于在TableView中呈现某些列的单元工厂
tcoLast.setCellFactory(新ClientNameTableCellFactory());
tcoFirst.setCellFactory(新ClientNameTableCellFactory());
tcoDoB.setCellFactory(新客户端dobtableCellFactory());
//设置自动调整大小的固定列宽
//值加权为41(任意)总数的一小部分
tcoLast.prefWidthProperty().bind(tbvMatches.widthProperty().multiply(11.0/41.0));
tcoFirst.prefWidthProperty().bind(tbvMatches.widthProperty().multiply(11.0/41.0));
tcoDoB.prefWidthProperty().bind(tbvMatches.widthProperty().multiply(8.0/41.0));
tcoMRN.prefWidthProperty().bind(tbvMatches.widthProperty().multiply(8.0/41.0));
tcoGen.prefWidthProperty().bind(tbvMatches.widthProperty().multiply(2.0/41.0));
:
:
}

您可以为以前的表格列设置MaxWidth。