【问题标题】:JavaFX: Force individual column width in TableViewJavaFX:在 TableView 中强制单个列宽
【发布时间】:2015-01-31 18:05:15
【问题描述】:

如何在 TableView 中强制单个列宽?

假设我有一个按钮可以将所有列的宽度重置为预定义的值。我的 TableView 配置为具有UNCONSTRAINED_RESIZE_POLICY。现在,如果我手动调整 两个 列的大小,然后点击重置按钮,则没有任何反应。

我使用setPrefWidth() 来设置首选 列宽。我什至检查了前后的值,它会根据需要更改。但是,视觉表示保持不变。是否有可能强制将真实列的大小调整为所需的宽度?我可以告诉我的表格重新布局、更新或重新绘制吗?

JavaFX 是否在 SWT 中提供诸如 pack() 之类的函数来强制组件调整到其首选宽度/高度?

【问题讨论】:

    标签: layout javafx width tableview


    【解决方案1】:

    尝试将列的宽度绑定到表格的宽度:

    col1.prefWidthProperty().bind(col1.getTableView().widthProperty().multiply(1.5).divide(2));
    col2.prefWidthProperty().bind(col2.getTableView().widthProperty().multiply(0.5).divide(2));
    

    【讨论】:

    • 我无法将列宽设置为固定值(例如300)。
    • 您可以设置prefWidth,但列的容器,在本例中为tableView,是决定列宽的容器。它试图为每一列赋予其首选宽度,但并不总是成功。无论如何,尽量避免在 tableView 中使用固定大小的列,因为这是不好的做法
    • 我不希望列具有固定宽度,我只想将其设置为 特定 宽度。用户之后仍然可以调整它的大小。但遗憾的是没有直接生效的setWidth()方法。它只是 min、max 和 pref,而 JavaFX 将它们混合在一起,最后做了一些不可预测的事情。 :-)
    猜你喜欢
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多