2010-06-02 3 views
1

이것은 정말로 나를 괴롭힌다.텍스트를 JTextComponent에 붙여 넣은 후에 액션 받기 (Java)

JPopupMenu와 DefaultEditorKit.Cut\Copy\PasteAction()을 사용하여 마우스 오른쪽 버튼으로 잘라내 기 \ copy \ paste 메뉴를 추가 한 JTextComponent이 있습니다. 내가 함수에 사용할 JTextComponent에의 텍스트를 잡고 액션 리스너를 추가 한 각 작업에 대한

JMenuItem cutItem = new JMenuItem(new DefaultEditorKit.CutAction()); 
JMenuItem copyItem = new JMenuItem(new DefaultEditorKit.CopyAction()); 
JMenuItem pasteItem = new JMenuItem(new DefaultEditorKit.PasteAction()); 

.

final ActionListener textFieldListener = new ActionListener() { 
@Override public void actionPerformed(ActionEvent e){someGlobalFunction(textComponent.getText()); 
} 
}; 

...

cutItem.addActionListener(textFieldListener); 
copyItem.addActionListener(textFieldListener); 
pasteItem.addActionListener(textFieldListener); 

그러나, 내가 잡아 얻을 수있는 유일한 텍스트는 전에 내가 \하지 후, 구성 요소에 붙여 절단 문자열입니다.

이에 대한 확실한 해결책이 있습니까? 당신이 당신의 텍스트 필드를 듣지 않기 때문에

답변

1

SwingUtilities.invokeLater (...)의 actionPerformed() 메소드에서 코드를 래핑하십시오. 이렇게하면 EDT의 끝 부분에 코드가 추가되어 잘라 내기/복사/붙여 넣기 명령 후에 실행해야합니다.

+0

그 트릭을 했어! –

0

그것은, 당신은 당신의 텍스트 필드에 리스너를 넣어, 또는 텍스트 필드의 문서, 또는 아마도 FilterDocument에

:-) 메뉴를 듣고, 또는 심지어 자신의 문서.

+0

어떤 수신기 유형입니까? –

관련 문제