我正在设置按钮,文本字段和图片,以便在模拟器IPhone6上有一个完美的外观。 然后我把它放在真正的iPhone 6上,有一些差异。 图片不在中央,一个按钮在外面一半。 我手工编程,没有gui builder。 设置按钮,标签,文本字段的最佳方法是什么呢? 正确放置在硬件上?
这里是我的示例代码:
Form dlgpass = new Form("");
dlgpass.setLayout(new BoxLayout(BoxLayout.Y_AXIS));
Image img2;
try {
img2 = Image.createImage("/xz.jpg");
Container cco2 = BoxLayout.encloseX();
Label llc1 = new Label(" ");
Label llc2 = new Label(" ");
cco2.getStyle().setMarginBottom(50);
cco2.getStyle().setMarginTop(20);
cco2.add(llc1).add(img2).add(llc2);
dlgpass.add(cco2);
Label ll4 = new Label(" ");
Label ll5 = new Label(" ");
Container cco3 = BoxLayout.encloseX();
Label llc3 = new Label(„test");
cco3.getStyle().setMarginTop(100);
cco3.add(ll4).add(llc3).add(ll5);
Container cco4 = BoxLayout.encloseX();
TextField pa = new TextField("", "Password", 16, TextField.PASSWORD);
Label ll6 = new Label(" ");
Label ll7 = new Label(" ");
cco4.getStyle().setMarginTop(60);
cco4.add(ll6).add(pa).add(ll7);
dlgpass.add(cco4);
Button logi = new Button(" login ");
logi.addActionListener((e) -> chlogi(pa.getText(),ce));
Label ll1 = new Label(" ");
Label ll2 = new Label(" ");
Container cco1 = BoxLayout.encloseX();
cco1.getStyle().setMarginTop(60);
cco1.add(ll1).add(logi).add(ll2);
dlgpass.add(cco1);
图片为629x810像素,24位色。 这是一个登录的Splashscreen。
图片:
EDIT 陈,这是我试过的。这是你的意思吗?
Form dlgpass = new Form("", new BorderLayout());
Image img2;
img2 = Image.createImage("/xx.jpg");
ScaleImageLabel simg = new ScaleImageLabel(img2);
dlgpass.add(BorderLayout.CENTER, simg);
Container cco = new Container(new BorderLayout());
TextField pa = new TextField("", "Password", 16, TextField.PASSWORD);
cco.addComponent(BorderLayout.NORTH,pa);
FlowLayout flow = new FlowLayout(Component.CENTER);
flow.setValign(Component.BOTTOM);
Container cco1 = new Container(flow);
Button logi = new Button(" login ");
logi.addActionListener((e) -> chlogi(pa.getText(),ce));
cco1.addComponent(logi);
cco.addComponent(BorderLayout.SOUTH,cco1);
dlgpass.addComponent(BorderLayout.SOUTH,cco);
答案 0 :(得分:2)
避免使用空格,空标签,在组件上设置边距使用布局来将组件定位在From上。 在你的用例中,我可能会做这样的事情:
表格 - BorderLayout。
如果您需要/想要空间组件,请在组件上使用setUIID()并在主题中调整边距和/或填充(始终使用mm)
答案 1 :(得分:1)
要了解布局定位可移植性,请查看有关使用布局管理器的视频https://www.codenameone.com/how-do-i---positioning-components-using-layout-managers.html。
另请查看Multi-Image,它允许图像适应各种尺寸。