我有一个子菜单填充了一些操作,但是它们上显示的名称是不可取的。而不是“复制”和“粘贴”,我得到的不太理想:复制到剪贴板,粘贴到剪贴板。我需要改变它。
//Submenu
SubMenu = new JMenu("Paste");
menuOptions.add(SubMenu);
Action textActionCopy = new DefaultEditorKit.CopyAction();
Action textActionPaste = new DefaultEditorKit.PasteAction();
//Copy
SubMenu.add(textActionCopy);
//Paste
SubMenu.add(textActionPaste);
答案 0 :(得分:5)
如何创建一个MenuItem并添加动作然后添加到菜单..
<强>示例:强>
//Submenu
subMenu = new JMenu("Paste");
menuOptions.add(SubMenu);
JMenuItem cut = new JMenuItem(new DefaultEditorKit.CutAction());
JMenuItem copy = new JMenuItem(new DefaultEditorKit.CopyAction());
JMenuItem paste = new JMenuItem(new DefaultEditorKit.PasteAction());
subMenu .add(cut);
paste.setText("Paste");
cut.setText("Cut");
copy.setText("Copy");
subMenu .add(copy);
subMenu .add(paste);
还遵循变量名称的Java约定
答案 1 :(得分:3)
让Java String操作代码为您完成此任务。
例如,假设一组Actions:
private Action[] textActions = { new DefaultEditorKit.CutAction(),
new DefaultEditorKit.CopyAction(), new DefaultEditorKit.PasteAction(), };
getValue(...)
方法获取操作的原始名称。-to-clipboard
部分,方法是设置从字符串开头开始并以"-"
结束的子字符串:substring(0, value.indexOf("-"));
putValue(...)
方法将操作名称设置为新值。例如:
private Action[] textActions = { new DefaultEditorKit.CutAction(),
new DefaultEditorKit.CopyAction(), new DefaultEditorKit.PasteAction(), };
public DisplayText(String title, String info) {
JMenu menu = new JMenu("Edit");
for (Action textAction : textActions) {
String value = textAction.getValue(AbstractAction.NAME).toString();
value = value.substring(0, value.indexOf("-"));
value = value.substring(0, 1).toUpperCase() + value.substring(1);
textAction.putValue(AbstractAction.NAME, value);
menu.add(new JMenuItem(textAction));
}