Codename One:控制标题栏的高度(工具栏)

时间:2017-03-18 14:06:37

标签: codenameone

我无法弄清楚如何控制标题栏(工具栏)的高度。以下代码不起作用:

((Label)form.getToolbar().getTitleComponent()).setIcon(image); // sets the image

// below does not work
((Label)form.getToolbar().getTitleComponent()).setHeight(50); 
form.getToolbar().setHeight(50);

我想降低高度的原因是标题栏中似乎有一些额外的空格。

我添加了一个屏幕截图:

enter image description here

增加:

我已根据您的建议修改了我的代码,但仍然无效:

@Override
public void run() {
    show();
}

private class SignupLoginForm extends Form {
    public SignupLoginForm(String title, BorderLayout borderLayout) {
        super(title, borderLayout);
    }

    @Override
    protected boolean shouldPaintStatusBar() {
        return false;
    }

    @Override
    protected Component createStatusBar() {
        return new Container();
    }
}

private final void show() {
    loginSignupForm = new SignupLoginForm(null, new BorderLayout());
    Tabs loginSignupTabs = new Tabs();
    Image splashScreenImage = theme.getImage("logo.png");
    ((Label) loginSignupForm.getToolbar().getTitleComponent()).setIcon(splashScreenImage);
    Style loginSignupStyle = UIManager.getInstance().getComponentStyle("Tab");
    prepareAndAddSignupTab(loginSignupTabs, loginSignupStyle);
    prepareAndAddLoginTab(loginSignupTabs, loginSignupStyle);
    loginSignupForm.add(BorderLayout.CENTER, loginSignupTabs);
    loginSignupForm.show();
}

请注意,我没有使用GUI Builder。

2 个答案:

答案 0 :(得分:3)

您可以通过覆盖shouldPaintStatusBar()中的Form来摆脱状态,TitleBar将取其内容的大小加上填充和&边距。

@Override
protected boolean shouldPaintStatusBar() {
    return false;
}

或者通过修改主题中的StatusBar UIID,使所有方面都有0填充。除非您使用自定义工具栏,否则这会对您的应用程序产生影响。

如果您希望在单个表单上删除它,则可以覆盖Form的另一种方法是createStatusBar()。您只需返回一个空白容器即可。

@Override
protected Component createStatusBar() {
    return new Container();
}

无论哪一个最适合你。

答案 1 :(得分:0)

更好地控制工具栏的行为和外观的另一种方法是访问其属性:

Form form = new Form (new FlowLayout(1));
Toolbar toolbar = form.getToolbar(); 

Button button = new Button ("Button");
Label labelToolbar = new Label ("Text");

toolbar.getAllStyles().setBgTransparency(0);
toobar.add (BorderLayout.CENTER , labelToolbar);
toobar.add (BorderLayout.NORTH , button);
toolbar.setUIID("MyToolBar");

form.show();