Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.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 如何设置窗体';什么是工具栏?_Codenameone - Fatal编程技术网

Codenameone 如何设置窗体';什么是工具栏?

Codenameone 如何设置窗体';什么是工具栏?,codenameone,Codenameone,我正在尝试更改窗体工具栏所有元素的颜色: public class LoginForm extends Form{ private Form formSplash; public LoginForm(Resources theme) { super("Login", new BorderLayout()); setUIID("rush-login"); getToolbar().g

我正在尝试更改窗体工具栏所有元素的颜色:

public class LoginForm extends Form{

    private Form formSplash;
    
    public LoginForm(Resources theme) {
        super("Login", new BorderLayout());
        setUIID("rush-login");
        getToolbar().getTitleComponent().setUIID("rush-login-title");
        getToolbar().getAllStyles().setBgTransparency(0);
        getToolbar().setBackCommand("Back", e -> {
                    if(formSplash != null) {
                        formSplash.showBack();
                    }
        });
        setScrollable(false);
    }

    public void setFormSplash(Form formSplash) {
        this.formSplash = formSplash;
    }
}
我确实看到标题的颜色发生了变化,但“back”图标仍具有原始颜色:


有没有办法使工具栏的每个元素具有相同的颜色?

我不确定这是否适用于
setBackCommand
,但您可以使用工具栏上的
findCommandComponent
,并将UIID设置为所需的任何值:

Button b = toolbar.findCommandComponent(cmd);

setBackCommand
返回一个应该可以用于该操作的
Command
对象,尽管在本用例中可能需要使用“将命令添加到左侧方法”

一般来说,可以从主题编辑器更改材质图标的颜色,调整前景色的默认样式。但这只有在您不激活CN1CSS支持时才有效

如果您使用css支持或希望使用不同的图标,以下是设置材质图标样式的工作示例,尤其是“后退”命令:

Form my Form = new Form ();     
int color = 0xffffff;
Font materialFontBack = Font.createTrueTypeFont("fontello-back", "fontello-back.ttf");           
FontImage imageBack = FontImage.createFixed("\ue800", materialFontBack, color, 40, 40);


Command back = new Command("Back") {

     @Override
     public void actionPerformed(ActionEvent evt) {
             formStart.showBack();
     }
};

myForm.getToolbar().setBackCommand(back);

ToolBar myToolbar = myForm.getToolbar();
Button buttonToolbar = myToolbar.findCommandComponent(back);
buttonToolbar.setIcon(imageBack);

提供了有关如何导入字体图像的指南

Shai,我能够找到按钮,但是我设置了
b.getAllStyles().setFgColor(0x4A4A4A)它不会影响图标的颜色。此外,Iv'e还尝试为按钮设置文本:
b.setText(“HELLO”)和应用于文本的颜色,但图标仍为原始颜色。我假设这样的工具栏图标有一个全局颜色,我不介意在全局级别上更改它,但我找不到方法来做到这一点。甚至有可能吗?图标是一个材料设计图标,因此它在创建时采用颜色。这意味着您需要调用
FontImage
来重新设置图标,如果您想更改颜色。