rai*_*all 6 java constants switch-statement
我有2个Java类:
public abstract class IconNames {
/**
*
*/
public static final String ButtonFett = java.util.ResourceBundle.getBundle("recources/buttonproperties").getString("fett");
}
Run Code Online (Sandbox Code Playgroud)
和
public class EditorPanelActionListener implements ActionListener{
.
.
.
String buttonText = e.getActionCommand();
switch(buttonText)
{
case IconNames.ButtonFett: //Error: constant string expression required
replace(XmlTags.BOLD);
break;
}
.
.
.
}
Run Code Online (Sandbox Code Playgroud)
EditorPanelActionListener触发错误"需要常量字符串表达式",问题是什么?
谢谢!
您不应混淆程序逻辑和用户界面文本。操作命令是一个与显示的文本不同的属性,如果未明确设置,则仅默认为显示的文本。
\n\npublic abstract class IconNames {\n public static final String ButtonFett_CMD = "DO-BOLD";\n public static final String ButtonFett_TXT = java.util.ResourceBundle.getBundle("recources/buttonproperties").getString("fett");\n}\nRun Code Online (Sandbox Code Playgroud)\n\n\xe2\x80\xa6
\n\nJButton b=new JButton(IconNames.ButtonFett_TXT);\nb.setActionCommand(IconNames.ButtonFett_CMD);\nRun Code Online (Sandbox Code Playgroud)\n\n\xe2\x80\xa6
\n\nString buttonText = e.getActionCommand();\nswitch(buttonText)\n{\n case IconNames.ButtonFett_CMD: // user language independent\n replace(XmlTags.BOLD);\n break;\n}\nRun Code Online (Sandbox Code Playgroud)\n\nAbstractButton这也适用于包含菜单项的子类。如果您直接处理 Action 实现(我怀疑是否看到您的 switch 语句),您应该区分 和Action.NAME属性Action.ACTION_COMMAND_KEY。