您不应该混淆程序逻辑和用户界面文本.动作命令是与所示文本不同的属性,如果未明确设置,则仅默认为显示的文本.
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属性.