【问题标题】:Correctly sizing the header for one column of a JTable为 JTable 的一列正确调整标题的大小
【发布时间】:2011-09-13 02:30:56
【问题描述】:

我有一个包含 3 列的表,并且希望第一个是所需的最小大小。标题是“级别”,似乎是 25-29 像素,具体取决于我使用的字体/操作系统。然而,表格标题在 Windows 上似乎需要至少 35 个,在 Mac 上至少需要 52 个才能在没有省略号的情况下显示它。我不知道为什么需要额外的空间(没有边框等)。

我终于发现,以下将在 Windows (35) 上提供所需的大小,但在 Mac 上它返回 36,这还不够(很可能是由于排序箭头指示符位于文本旁边而不是上方)。 ..

table.getTableHeader().getDefaultRenderer().getTableCellRendererComponent(null, table.getColumnModel().getColumn(0).getHeaderValue(),假,假,0, 0).getPreferredSize().width

独立于平台的正确方法是什么?或者,在 Mac 上是否有一种方法可以计算所需的额外空间,这样我就不必对上述结果添加 15 个左右像素之类​​的东西进行硬编码?

【问题讨论】:

    标签: java swing jtableheader


    【解决方案1】:

    我会坚持使用setPreferredScrollableViewportSize()Setting and Changing Column Widths 中建议的方法,然后是pack()

    【讨论】:

    • 还有另一个例子stackoverflow.com/questions/7258943/… +1
    • @mKorbel:谢谢!很好的链接。我忘记了Table Column Adjuster
    • 好的,我上面使用的行是基于 设置和更改列宽 中的示例,该示例适用于 Windows,但不适用于 Mac。 Table Column Adjuster 不仅使用默认渲染器,而且添加该部分也可以在 Mac 上运行。谢谢!
    • 啊,example 在使用 AquaTableHeaderUI 的 Mac OS 上失败。感谢 mKorbel 的提醒和@camickr 的解决方案!另请参阅Q&A
    • 教程示例是……嗯……次优 a) 错过了每列渲染器 b) 让模型决定“最长”值——它不能因为它不知道如何它将被渲染。 +1 到 @camickr 以获取利润 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    • 2011-02-28
    相关资源
    最近更新 更多