Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Codenameone 代号为1的布局问题_Codenameone - Fatal编程技术网

Codenameone 代号为1的布局问题

Codenameone 代号为1的布局问题,codenameone,Codenameone,目前,我只在模拟器中测试我的应用程序(因为我在另一个线程[]中提到的“发送iOS构建”有问题) 我遇到一些布局问题,无法正确使用宽度和高度。元素左对齐,右侧有未使用的空间。我需要上下滚动,而不是将所有内容都放在可视区域内。请查看图片 守则如下: private final void show() { loginSignupForm = new Form("Company", new BoxLayout(0)); Tabs loginSignupTabs = new Tabs(

目前,我只在模拟器中测试我的应用程序(因为我在另一个线程[]中提到的“发送iOS构建”有问题)

我遇到一些布局问题,无法正确使用宽度和高度。元素左对齐,右侧有未使用的空间。我需要上下滚动,而不是将所有内容都放在可视区域内。请查看图片

守则如下:

private final void show() {
    loginSignupForm = new Form("Company", new BoxLayout(0));
    Tabs loginSignupTabs = new Tabs();
    Style loginSignupStyle = UIManager.getInstance().getComponentStyle("Tab");
    prepareAndAddSignupTab(loginSignupTabs, loginSignupStyle);
    prepareAndAddLoginTab(loginSignupTabs, loginSignupStyle);
    loginSignupForm.add(loginSignupTabs);
    loginSignupForm.show();
}

private void prepareAndAddLoginTab(Tabs loginSignupTabs, Style loginSignupStyle) {
    loginID = new TextField();
    loginPassword = new TextField();
    Button loginButton = getLoginButton();
    Component[] loginComponents = {
            new Label("Email Address"),
            loginID,
            new Label("Password"),
            loginPassword,
            loginButton,
    };
    Container loginContainer = BoxLayout.encloseY(loginComponents);
    FontImage loginIcon = FontImage.createMaterial(FontImage.MATERIAL_QUESTION_ANSWER, loginSignupStyle);
    loginSignupTabs.addTab("Login", loginIcon, loginContainer);
}
我需要在此处更改输入代码以使元素:

1. expand to the maximum width (no free space on the right)
2. fit within the visual area (for top-to-bottom)

请注意,我正在对元素进行编码,因为我发现(新的)GUI构建器使用起来相当困难。

首先,不要将常量值作为参数传递给布局,因为这些值可能会在将来的Codename One更新中更改,这将使您难以调试。
new BoxLayout(0)
应该是
new BoxLayout(BoxLayout.Y_轴)
或干脆
BoxLayout.Y()

上面是出现问题的地方,但不是唯一的问题,因为
BoxLayout
没有将
0
识别为有效参数,因为它只有3个参数,分别是
X_轴=1
Y_轴=2
,和
X_轴不增长=3

如果您将上面的更改为使用
BoxLayout.Y_轴
,它将工作,但从上面的屏幕截图来看,这不是最佳解决方案

总之,将代码更改为以下内容:

private final void show() {
    loginSignupForm = new Form("Company", new BorderLayout());
    Tabs loginSignupTabs = new Tabs();
    Style loginSignupStyle = UIManager.getInstance().getComponentStyle("Tab");
    prepareAndAddSignupTab(loginSignupTabs, loginSignupStyle);
    prepareAndAddLoginTab(loginSignupTabs, loginSignupStyle);
    loginSignupForm.add(BorderLayout.CENTER, loginSignupTabs);
    loginSignupForm.show();
}