java - 使用 TableLayout 进行溢出布局

标签 java codenameone layout-manager tablelayout

我需要在一个表格中连续显示三件事。第一列的固定宽度应为屏幕的 15%。第三个应该右对齐并采用其首选宽度。第二个应该占据所有剩余空间(我需要添加一些间距,但那是另一个故事了)。

这发生在开始中:

    final Container list = new Container(BoxLayout.y());
    list.setScrollableY(true);
    final String[][] lines = {
            {"19", "Some text", "123,00"},
            {"20", "Some very very very very looong text", "1,00"},
    };
    for(final String[] line : lines) list.add(createContainer(line));
    form.add(list);

容器相当简单:

private Container createContainer(String[] line) {
    final TableLayout tableLayout = new TableLayout(1, 3);
    tableLayout.setGrowHorizontally(true);
    final Container result = new Container(tableLayout);
    {
        final Label l = new Label(line[0]);
        l.getAllStyles().setFgColor(0x0000FF);
        result.add(tableLayout.createConstraint().widthPercentage(15), l);
    }
    {
        final Label l = new Label(emptyToSpace(line[1]));
        l.getAllStyles().setFont(Font.createSystemFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_MEDIUM));
        result.add(tableLayout.createConstraint().widthPercentage(-2), l);
    }
    {
        final Label l = new Label(line[2]);
        l.getAllStyles().setFont(Font.createSystemFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_LARGE));
        l.getAllStyles().setFgColor(0x00FF00);
        result.add(tableLayout.createConstraint().widthPercentage(-1).horizontalAlign(Component.RIGHT), l);
    }
    return result;
}

根据 javadoc,-1 表示首选大小,-2 表示“剩余空间”。它有点有效,但似乎有一个误判。

无论我选择什么设备,问题都会发生在模拟器中。我可能做错了,因为我是 codenameone 布局的新手。

overflow

最佳答案

-2 标志主要针对最后一列进行了优化,因此这看起来像是一个错误,但可能很难解决。我认为没有必要在这里使用表格布局,因为您不使用可以提供行之间对齐的表格。

更简单的方法是边框布局,例如:

Container c = BorderLayout.centerEastWest(new Label(emptyToSpace(line[1])), 
                   rightText, leftText);

如果您希望左列对齐,只需在整个列上使用 Component.setSameWidth() 即可。

关于java - 使用 TableLayout 进行溢出布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53064187/

相关文章:

java - 如何在过滤 vaadin 网格时捕获异常

exception - 捕获代号一中的 NetworkManager 异常

java - AndroidLocationPlayServiceManager 上的构建错误

java - 拥有内部 JPanel

java - MapStruct - 找不到实现

java - KeyListener 与键绑定(bind)

parse-platform - (Proguard) 服务器构建错误代号一

java - 增加与 JPanel 顶部的距离

java - 如何集成不同的布局管理器以适应这种情况?

Java Arraylist问题从一处更改导致另一处