Swing работает с использованием привязок клавиш. Таким образом, вызывается только одно действие в зависимости от того, какая привязка клавиш найдена. Таким образом, вы не получите текст, вставленный дважды.
У вас может быть вызвано другое действие в зависимости от того, какой компонент имеет фокус и как было вызвано действие.
Например, если фокус находится на текстовом компоненте, то я предполагаю, что будет использоваться действие «Вставить» по умолчанию.
Если вы щелкнете по пункту меню, будет вызвано действие, которое вы добавили к пункту меню.
Если вы вызываете Control + V, когда фокус находится не в текстовом поле, то я предполагаю, что действие, связанное с пунктом меню, будет вызвано, потому что ускорители используют «окно в фокусе» (или как оно называется) InputMap.
Если вы используете действия по умолчанию, предоставляемые EditorKit, у вас не возникнет проблем:
JMenuItem pasteAction = new JMenuItem( new DefaultEditorKit.PasteAction() );
pastAction.setAccelerator(...);
person
camickr
schedule
09.11.2010