Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.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
Java 如何动态更改工具栏命令文本_Java_Codenameone - Fatal编程技术网

Java 如何动态更改工具栏命令文本

Java 如何动态更改工具栏命令文本,java,codenameone,Java,Codenameone,我有一个带有工具栏的表单,它的右侧有一个“Save”命令。当用户单击它时,我希望它更改为“已保存”,显然,当对表单进行更改时,我需要它恢复到原始的“保存”状态。这应该很简单,但我被卡住了,无法更改命令文本;我尝试设置文本并刷新/重新验证,但没有成功。非常感谢你的帮助 Command saveCMD = new Command("SAVE") { @Override public void actionPerfo

我有一个带有工具栏的表单,它的右侧有一个“Save”命令。当用户单击它时,我希望它更改为“已保存”,显然,当对表单进行更改时,我需要它恢复到原始的“保存”状态。这应该很简单,但我被卡住了,无法更改命令文本;我尝试设置文本并刷新/重新验证,但没有成功。非常感谢你的帮助

           Command saveCMD = new Command("SAVE") {
                @Override
                public void actionPerformed(ActionEvent evt)           
               {                                
                  Display.getInstance().vibrate(100);
                  doSavingMethod();
                  //change command text to SAVED
               };
             };
             saveCMD.putClientProperty("uiid", "SaveCommand");
             toolbar.addCommandToRightBar(saveCMD);

解决此问题的最佳方法是将命令声明为变量,并在每次需要更改时为其指定新值

private Command saveCMD = new Command("");

...

final Command afterSaveCmd = new Command("SAVED") {
    @Override
    public void actionPerformed(ActionEvent evt) {                                
        //What saved command should do, if any.
    };
};

saveCMD = new Command("SAVE") {
    @Override
    public void actionPerformed(ActionEvent evt) {                                
        Display.getInstance().vibrate(100);
        doSavingMethod();
        saveCMD = new Command("SAVED");
        //OR 
        saveCmd = afterSaveCmd;
        saveCMD.putClientProperty("uiid", "SaveCommand");
        form.removeCommand(saveCMD);
        toolbar.addCommandToRightBar(saveCMD);
        //form.revalidate();
    };
};
saveCMD.putClientProperty("uiid", "SaveCommand");
toolbar.addCommandToRightBar(saveCMD);

我将saveCMD和afterSaveCmd命令声明为变量,并使用:
saveCMD=afterSaveCmd
form.revalidate()
就像您发布的代码一样,但是命令文本没有改变。我有什么遗漏吗?谢谢你的帮助。我设法使它工作,需要一些额外的代码:
form.removeCommand(saveCMD);saveCMD=afterSaveCmd;saveCMD.putClientProperty(“uiid”、“SaveCommand”);工具栏.addCommandorRightBar(saveCMD);toolbar.revalidate()