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

3

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

           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);
1个回答

2

最好的方法是将您的命令声明为变量,并在每次更改时为其分配新值。

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(); 就像你发布的代码中一样,但是命令文本没有改变。我是否漏掉了什么?感谢您的帮助。 - Domingo Chavez
3
我成功地让它工作了,需要一些额外的代码:form.removeCommand(saveCMD); saveCMD = afterSaveCmd; saveCMD.putClientProperty("uiid", "SaveCommand"); toolbar.addCommandToRightBar(saveCMD); toolbar.revalidate(); - Domingo Chavez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接