【问题标题】:Table with sticky header and fitting text带有粘性标题和合适文本的表格
【发布时间】:2020-04-08 12:02:17
【问题描述】:

我试图找到如何制作一个带有简单粘性标题的表格,我发现的只是this blog,这很好,但远远超出了我的需要——我只需要一个粘性标题行和可滚动的内容,这应该是微不足道的......

我的第二个与表格相关的问题是我需要显示具有不同字段的行

| XYZ | Lorem ipsum long long long line foo bar blah ipsum dolores est. | 7 | - |
| PQR | Ceterum autem censeo Carthaginem esse delendam.                 | 3 | ✓ |

长文本应根据需要截断,而短字段必须完整显示。我可以找到最宽的文本或使用“WWW”,然后添加填充(也许还有其他东西?)以获得适当的宽度约束......或者我应该继承TableLayout

【问题讨论】:

    标签: java user-interface codenameone


    【解决方案1】:

    使用两个表格并使用百分比定义列宽,以便它们匹配。这将解决您的两个要求:

    Container twoTables = BorderLayout.center(mainTable);
    twoTables.add(NORTH, headerTable);
    

    定义宽度:

    protected TableLayout.Constraint createCellConstraint(Object value, int row, int column) {
        TableLayout.Constraint con = super.createCellConstraint(value, row, column);
        return con.wp(COLUMN_WIDTHS[column]);
    }
    

    【讨论】:

    • 你把我的第二个问题移到了COLUMN_WIDTHS。窄列的宽度必须适合所有文本。所以鉴于我上面的例子(假设只有两行),COLUMN_WIDTHS[0] 是什么,所以XYZPQR 都不会被切断?
    • 这有点棘手,因为它取决于屏幕/字体大小,但如果字体大小以毫米为单位,您可能可以定义适合所有结果的百分比大小。我会在模拟器中对各种大小的 DPI/屏幕进行一些反复试验。
    • 一旦有人改进了字体大小(我还没有碰过它们),“一点点试错”就会中断。我想,我会做一些计算......不幸的是,TableLayout.layoutContainer 是一个不打算定制的小怪物。我可以想象将绝对宽度和百分比结合起来,可能还有一些max,这样它在宽屏幕上也看起来不错(有一天,会有桌面版本)。现在,我将尝试使用Font.stringWidth("WWW") 来计算百分比。
    • 另一种方法是在有问题的列(包括标题)中的所有组件上调用Component.sameWidth(...) ,然后避免该列中的百分比以及可以“增长”的列。自己没有尝试过,但理论上应该可以。您还可以将百分比设置为 -2 以指示此列应占用可用空间。
    猜你喜欢
    • 2020-01-30
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 2021-09-08
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多