2014-04-23 41 views
0

我有一個子菜單填充了一些操作,但是出現在它們上的名稱是不可取的。我不太喜歡:「複製」和「粘貼」:複製到剪貼板,粘貼到剪貼板。我需要改變這一點。如何重命名子菜單項?

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

回答

5

如何創建一個菜單項,並添加動作,然後添加到菜單..

樣品:

 //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約定

+0

這是做到這一點的最好辦法。謝謝。 –

+0

@ user3541786不客氣。 –

3

設Java字符串操作代碼爲您執行此操作。

例如,假設操作的數組:

private Action[] textActions = { new DefaultEditorKit.CutAction(), 
    new DefaultEditorKit.CopyAction(), new DefaultEditorKit.PasteAction(), }; 
  1. 獲取經由Action的getValue(...)方法的動作的原始名稱。 substring(0, value.indexOf("-"));
  2. 再次使用的子開始用大寫字母的字符串:
  3. 將名稱改爲由歌廳開始於字符串的開始和結束"-"的子擺脫-to-clipboard部分。
  4. 使用Action putValue(...)方法將Action的名稱設置爲我們的新值。

例如:

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)); 
    } 
+0

注意不包含「-''的字符串,它將返回一個'indexOf' -1,它給你'value.substring(0,-1)'。你也可以使用'ch'形式的indexOf ...'value.indexOf(' - ')' –

+0

@StephenP:true,但是他的程序特別關注DefaultEditorKit中的Actions(按照他之前的問題),並且它們都嵌入了「 - 」。也不能保證這一直會保持如此。 –