首页 文章

如何在Codename One中应用多个布局?

提问于
浏览
1

我一直在尝试在Codename One中自定义业务主题 . 到目前为止,我添加了额外的按钮 . 现在我试图让这些按钮受到y轴boxlayout的约束,但我现在得到的是 IllegalArgumentException . 我已将表单设置为边框布局:

Form hi = new Form("Welcome", new BorderLayout(BorderLayout.CENTER_BEHAVIOR_CENTER_ABSOLUTE));
Button Customer = new Button("Customer");
Button gpsProduct = new Button("Find A product Near You");
Button learnMore = new Button("Learn More");
Button Website = new Button("Visit Our Website");
hi.add(BoxLayout.Y_AXIS, Customer).
   add(BoxLayout.Y_AXIS, learnMore).
   add(BoxLayout.Y_AXIS, gpsProduct).
   add(BoxLayout.Y_AXIS, Website);
hi.show();

1 回答

  • 0

    框布局Y不是边框布局的约束 . 目前还不清楚你想要看起来如何,但我猜你想要这样的东西将一个接一个地安排组件:

    Form hi = new Form("Welcome", BoxLayout.y());
    Button Customer = new Button("Customer");
    Button gpsProduct = new Button("Find A product Near You");
    Button learnMore = new Button("Learn More");
    Button Website = new Button("Visit Our Website");
    hi.add(Customer).
       add(learnMore).
       add(gpsProduct).
       add(Website);
    hi.show();
    

    以下是将框放置在边框布局父级中的两个嵌套示例:

    Form hi = new Form("Welcome", new BorderLayout());
    Button Customer = new Button("Customer");
    Button gpsProduct = new Button("Find A product Near You");
    Button learnMore = new Button("Learn More");
    Button Website = new Button("Visit Our Website");
    Container box = new Container(BoxLayout.y());
    box.add(Customer).
       add(learnMore).
       add(gpsProduct).
       add(Website);
    hi.add(BorderLayout.CENTER, box);
    hi.show();
    

    这可以用速记写成:

    Form hi = new Form("Welcome", new BorderLayout());
    Button Customer = new Button("Customer");
    Button gpsProduct = new Button("Find A product Near You");
    Button learnMore = new Button("Learn More");
    Button Website = new Button("Visit Our Website");
    hi.add(BorderLayout.CENTER, 
          BoxLayout.encloseY(Customer, learnMore, gpsProduct, Website););
    hi.show();
    

相关问题