首页 文章

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

提问于
浏览
2

在我的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 回答

  • 2

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

    label.getParent().revalidate();
    

相关问题