我有2个Java类:
public abstract class IconNames {
/**
*
*/
public static final String ButtonFett = java.util.ResourceBundle.getBundle("recources/buttonproperties").getString("fett");
}
和
public class EditorPanelActionListener implements ActionListener{
.
.
.
String buttonText = e.getActionCommand();
switch(buttonText)
{
case IconNames.ButtonFett: //Error: constant string expression required
replace(XmlTags.BOLD);
break;
}
.
.
.
}
EditorPanelActionListener触发错误“需要常量字符串表达式”,是什么问题?
谢谢!
答案 0 :(得分:2)
您不应混淆程序逻辑和用户界面文本。 action命令是一个与显示的文本不同的属性,如果没有明确设置,则默认为显示的文本。
public abstract class IconNames {
public static final String ButtonFett_CMD = "DO-BOLD";
public static final String ButtonFett_TXT = java.util.ResourceBundle.getBundle("recources/buttonproperties").getString("fett");
}
...
JButton b=new JButton(IconNames.ButtonFett_TXT);
b.setActionCommand(IconNames.ButtonFett_CMD);
...
String buttonText = e.getActionCommand();
switch(buttonText)
{
case IconNames.ButtonFett_CMD: // user language independent
replace(XmlTags.BOLD);
break;
}
这适用于AbstractButton
的子类,其中也包含菜单项。如果您直接处理Action实现(我怀疑您看到了switch语句),那么您应该区分Action.NAME
和Action.ACTION_COMMAND_KEY
属性。