2014-04-23 4 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
에 대한 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 규칙을 따라야

+0

이 할 수있는 가장 좋은 방법입니다. 고맙습니다. –

+0

@ user3541786 당신은 오신 것을 환영합니다. –

3

하자 자바 문자열 조작 코드는 당신을 위해 이것을한다. 액션의 어레이를 가정하면 예를 들어

:

private Action[] textActions = { new DefaultEditorKit.CutAction(), 
    new DefaultEditorKit.CopyAction(), new DefaultEditorKit.PasteAction(), }; 
  1. 액션 getValue(...)의 방법을 통해 동작의 원래 이름을 취득. substring(0, value.indexOf("-"));
  2. 사용이 대문자로 문자열을 시작하려면 다시 문자열 :
  3. 변경 이름은 문자열의 시작 부분에서 시작하여 "-"에서 끝나는 문자열을에 geting하여 -to-clipboard 부분을 제거합니다.
  4. 조치 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)); 
    } 
+0

''-''을 포함하지 않는 문자열에주의하십시오.이 문자열은'value.substring (0, -1)'을주는'indexOf' -1을 반환합니다. 당신은 또한 indexOf ...'value.indexOf ('-')'ch' 형태를 사용할 수도 있습니다. –

+0

@StephenP : true이지만 그의 프로그램은 DefaultEditorKit의 액션을 찾고 있습니다 (이전 질문에 따라)), 그들 모두에는'-'이 포함되어 있습니다. 이것이 항상 그렇게 유지 될 것이라는 보장이 없다는 것도 또한 사실입니다. –

관련 문제