如何重命名子菜单项?

时间:2014-04-23 21:48:38

标签: java swing action jmenu jmenuitem

我有一个子菜单填充了一些操作,但是它们上显示的名称是不可取的。而不是“复制”和“粘贴”,我得到的不太理想:复制到剪贴板,粘贴到剪贴板。我需要改变它。

      //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);

2 个答案:

答案 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(), };
  1. 通过操作getValue(...)方法获取操作的原始名称。
  2. 更改名称以删除-to-clipboard部分,方法是设置从字符串开头开始并以"-"结束的子字符串:substring(0, value.indexOf("-"));
  3. 再次使用subString以大写字母开始字符串。
  4. 使用操作putValue(...)方法将操作名称设置为新值。
  5. 例如:

    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));
       }
    
相关问题