在我的Codename One应用中,当应用发送查询时,我想在中心显示InfiniteProgress
,在其下方显示一个居中的标签,告诉用户发生了什么。因此,我使用BorderLayout
创建了一个容器,并使用约束BorderLayout.CENTER
和包含BorderLayout.SOUTH
约束的容器添加了无限进度,其中包含标签。内部容器布局为BorderLayout
,BorderLayout.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();
现在,当我点击按钮更改标签文字时,您可以看到标签没有显示整个文字(见图片)。
答案 0 :(得分:2)
设置标签文字后添加此行:
label.getParent().revalidate();