Codenameone 并非所有组件都显示在Borderlayout.South中

Codenameone 并非所有组件都显示在Borderlayout.South中,codenameone,Codenameone,我在下面的代码中复制了一个奇怪的问题。我已经在模拟器和设备上进行了测试&结果是一样的。我在一个容器中有26个按钮(它的布局是flowlayout),它本身位于BorderLayout(表单布局)的南部。但只看到部分按钮。我在下面的代码中做错了什么?重新验证也不起作用 setLayout(new BorderLayout()); TextArea questionTextArea = new TextArea("1) question .........."); Container questi

我在下面的代码中复制了一个奇怪的问题。我已经在模拟器和设备上进行了测试&结果是一样的。我在一个容器中有26个按钮(它的布局是flowlayout),它本身位于BorderLayout(表单布局)的南部。但只看到部分按钮。我在下面的代码中做错了什么?重新验证也不起作用

setLayout(new BorderLayout());

TextArea questionTextArea = new TextArea("1) question ..........");
Container questionContainer = new Container();
questionContainer.add(questionTextArea);

Container questionAnswerContainer = BoxLayout.encloseY(questionContainer);
add(BorderLayout.CENTER, questionAnswerContainer);

Container optionsContainer = new Container(new FlowLayout(Label.CENTER, Label.CENTER));
for (int i = 0; i < 26; i++) {
    Button optionButton = new Button("i");
    optionsContainer.add(optionButton);
}
optionsContainer.revalidate();

Button skipButton = new Button("SKIP");
Container bottomContainer = BoxLayout.encloseY(optionsContainer, skipButton);
bottomContainer.revalidate();
add(BorderLayout.SOUTH, bottomContainer);
//f.revalidate();
setLayout(新的BorderLayout());
text区域问题text区域=新文本区域(“1)问题……);
容器问题容器=新容器();
questionContainer.add(questionTextArea);
容器questionAnswerContainer=BoxLayout.encloseY(questionContainer);
添加(BorderLayout.CENTER、questionAnswerContainer);
容器选项Container=新容器(新流程布局(Label.CENTER,Label.CENTER));
对于(int i=0;i<26;i++){
按钮选项按钮=新按钮(“i”);
选项容器。添加(选项按钮);
}
optionsContainer.revalidate();
按钮skipButton=新按钮(“跳过”);
Container bottomContainer=BoxLayout.encloseY(选项Container,skipButton);
bottomContainer.revalidate();
添加(BorderLayout.SOUTH,bottomContainer);
//f、 重新验证();
这里只看到7个基站。skipButton也不在那里。为什么不显示其他按钮


不要过多地调用
重新验证
,因为除了减慢应用程序的速度外,它还可能破坏布局。仅当整个布局完成时才应调用它

FlowLayout
在这些情况下通常是不稳定的,这是问题的根源。当宽度太大而高度太小时,它要求一个首选的宽度/高度,然后当它实际放入容器时,它没有得到所需的空间量。在没有回流的情况下修复此问题会显著降低性能

一种解决方法是使用更具确定性的布局,如带有自动拟合的网格布局