@Szarpul 的回答很好。我扩展了它,以便您可以拥有固定的列,调整其宽度的列和占据其余部分的列。
对于固定宽度,将宽度属性设置为所需的宽度。对于灵活宽度,将其设置为大于 0 的任何值。如果内容的宽度较长,它将增长到最长元素的宽度。样式可防止文本在每个空格处换行。对于占用剩余空间的列,不要定义宽度。您甚至可以使用更多没有宽度的列,然后它们将平均分配剩余空间。
这是一个例子:
<p:dataTable tableStyle="table-layout: auto;">
<p:column width="300" headerText="Text" />
<p:column width="300" headerText="Some more Text" />
<p:column width="1" headerText="Text" style="white-space: nowrap;"/>
<p:column width="1" headerText="Some more Text" style="white-space: nowrap;"/>
<p:column headerText="Remainder" />
</p:dataTable>
这将如下所示:
-------------------------------------------------- --------------------------------------
| 正文 | 更多文字 | 正文 | 更多文字 | 剩余 |
-------------------------------------------------- --------------------------------------
这也适用<p:treeTable>
。我在 Chrome 84 和 IE 11 上测试了这两个组件的解决方案。