如何获得 Codename One Form 功能垂直滚动?
How to get Codename One Form feature vertical scroll?
My Codename One 应用的特点是一个表单,其中包含 3 个包含文本的 SpanLabel 和一个位于 LayeredLayout 中的容器,其中包含一个图像和一个叠加层。
this.add(BorderLayout.NORTH, spanLab1);
this.add(BorderLayout.CENTER, imageCont);
this.add(BorderLayout.SOUTH, BoxLayout.encloseY(spanLab2, spanLabl3));
这会产生以下结果:
这并不令人满意,因为图像(出现在中间,应该是 CN1 图标)没有缩放而是被剪切,因为无法向下滚动。
我试图强制表单可滚动 (this.setScrollableY(true)
) 但没有成功。
我是不是哪里弄错了,例如,我的所有内容都应该放在 BorderLayout.CENTER
中,因为根据 documentation,NORTH 位置专用于标题和SOUTH 一个用于可选菜单栏(我尝试过但没有成功)?
或者我应该显示一个对话框(它提供开箱即用的 Y-Scroll)?在没有图片剪切或文本重叠的情况下显示我的所有(长)内容的正确方法是什么?
编辑 2016 年 12 月 22 日
正如@Tizbn 所写,表单的 ContentPane 必须位于 Vertical BoxLayout 中。所以对 parent 构造函数的调用必须写成:
super(new BoxLayout(BoxLayout.Y_AXIS));
非常感谢您的帮助!
垂直滚动在 BorderLayout 中被禁用。为此,可以使用带 Y 轴的 BoxLayout,并在 Boxlayout 中设置 setScrollableY(true)。希望对你有帮助。
My Codename One 应用的特点是一个表单,其中包含 3 个包含文本的 SpanLabel 和一个位于 LayeredLayout 中的容器,其中包含一个图像和一个叠加层。
this.add(BorderLayout.NORTH, spanLab1);
this.add(BorderLayout.CENTER, imageCont);
this.add(BorderLayout.SOUTH, BoxLayout.encloseY(spanLab2, spanLabl3));
这会产生以下结果:
这并不令人满意,因为图像(出现在中间,应该是 CN1 图标)没有缩放而是被剪切,因为无法向下滚动。
我试图强制表单可滚动 (this.setScrollableY(true)
) 但没有成功。
我是不是哪里弄错了,例如,我的所有内容都应该放在 ? BorderLayout.CENTER
中,因为根据 documentation,NORTH 位置专用于标题和SOUTH 一个用于可选菜单栏(我尝试过但没有成功)
或者我应该显示一个对话框(它提供开箱即用的 Y-Scroll)?在没有图片剪切或文本重叠的情况下显示我的所有(长)内容的正确方法是什么?
编辑 2016 年 12 月 22 日
正如@Tizbn 所写,表单的 ContentPane 必须位于 Vertical BoxLayout 中。所以对 parent 构造函数的调用必须写成:
super(new BoxLayout(BoxLayout.Y_AXIS));
非常感谢您的帮助!
垂直滚动在 BorderLayout 中被禁用。为此,可以使用带 Y 轴的 BoxLayout,并在 Boxlayout 中设置 setScrollableY(true)。希望对你有帮助。