如何获得Codename One Form功能垂直滚动?

时间:2016-12-21 20:49:29

标签: codenameone

My Codename One应用程序的一个Form包含3个SpanLabel,其中包含文本和LayeredLayout中的一个Container,带有图像和叠加层。

    this.add(BorderLayout.NORTH, spanLab1);
    this.add(BorderLayout.CENTER, imageCont);
    this.add(BorderLayout.SOUTH, BoxLayout.encloseY(spanLab2, spanLabl3));

这导致以下结果:

Form not scrollable (text is irrelevant)

这不太令人满意,因为图像(显示在中央并且应该是CN1图标)没有缩放但是因为无法向下滚动而被剪切。

我试图强制表单可滚动(this.setScrollableY(true))但没有成功。

我是否在某个地方犯了错误,例如我的所有内容都应该放在BorderLayout.CENTER中,因为根据documentation,北部位置专用于标题,而南部位置是一个可选的菜单栏(我尝试了这个没有成功)

或者我应该显示一个Dialog(提供Y-Scroll开箱即用)?什么是显示所有(长)内容没有图片剪切或文本重叠的正确方法?

2016年12月22日编辑

正如@Tizbn所写,Form的ContentPane必须在Vertical BoxLayout中。因此必须编写对父构造函数的调用:

super(new BoxLayout(BoxLayout.Y_AXIS));

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

在BorderLayout中禁用垂直滚动。因为可以使用具有Y轴的BoxLayout并在Boxlayout中生成setScrollableY(true)。希望它会有所帮助。