Java - Как подключиться к меню "Копировать и вставить" в Mac OS
Я понимаю, что вы можете:
// Where CustomMacOSXController implements implements MRJAboutHandler, ...
CustomMacOSXController macOSXController = new CustomMacOSXController()
MRJApplicationUtils.registerAboutHandler(macOSXController);
MRJApplicationUtils.registerPrefsHandler(macOSXController);
//... and so on
Однако я не могу найти ничего, чтобы перехватить меню копирования и вставки, чтобы при его вызове это влияло на текущий выбранный JTextField (например, вставка вставит буфер обмена в выбранный JTextField.
1 ответ
В отличие от системного и прикладного меню Mac OS X, меню "Правка" полностью находится в ведении вашей программы. Вы должны создать и заполнить его подходящим Action
, Предопределенные подклассы, определенные в javax.swing.text.TextAction
удобны, так как они знают о целевом компоненте. Смотрите также этот связанный вопрос и пример. Например,
Action pasteAction = new DefaultEditorKit.PasteAction();
JMenuItem pasteItem = new JMenuItem(pasteAction);
JButton pasteButton = new JButton(pasteAction);
Приложение: Чтобы полностью интегрировать меню "Правка" в Mac OS X, вы должны указать операционной системе использовать ваше меню, используя один из подходов, показанных здесь. Чтобы получить зависящий от платформы ключ модификатора, используйте getMenuShortcutKeyMask()
, как показано здесь. Наконец, Чарльз Белл HTMLDocumentEditor
это пример, который использует текстовые действия.