在Codename One的边框布局的南部容器中居中标签

时间:2016-10-25 15:59:43

标签: codenameone

在我的Codename One应用中,当应用发送查询时,我想在中心显示InfiniteProgress,在其下方显示一个居中的标签,告诉用户发生了什么。因此,我使用BorderLayout创建了一个容器,并使用约束BorderLayout.CENTER和包含BorderLayout.SOUTH约束的容器添加了无限进度,其中包含标签。内部容器布局为BorderLayoutBorderLayout.CENTER_BEHAVIOR_CENTER_ABSOLUTE。然后我只添加约束BorderLayout.CENTER的标签,这确实使标签居中。但是,当我尝试将标签的文本更改为更长时间时,它会被切断。使用下面的简单示例可以证明问题:

    Form hi = new Form("Welcome", new BorderLayout(BorderLayout.CENTER_BEHAVIOR_CENTER_ABSOLUTE));
    Button button = new Button("Change text");
    Label label = new Label("South");
    button.addActionListener(event -> {
        label.setText("A lot longer text");
    });
    hi.add(BorderLayout.CENTER, button);

    Container container = new Container();
    container.setLayout(new BorderLayout(BorderLayout.CENTER_BEHAVIOR_CENTER_ABSOLUTE));
    container.add(BorderLayout.CENTER, label);
    hi.add(BorderLayout.SOUTH, container);
    hi.show();

现在,当我点击按钮更改标签文字时,您可以看到标签没有显示整个文字(见图片)。

enter image description here enter image description here

1 个答案:

答案 0 :(得分:2)

设置标签文字后添加此行:

label.getParent().revalidate();