Как я могу использовать системное контекстное меню для файлов в приложении Java? - PullRequest
3 голосов
/ 14 июля 2010

Я хочу отобразить результаты поиска файла. Я хочу включить контекстное меню для выбора файла, которое будет контекстным меню системы.

Например, если пользователь щелкает правой кнопкой мыши файл в Windows - я хочу отобразить всплывающее меню с параметрами:

  • Открыть
  • Открыть с помощью ...
  • Редактировать
  • Отправить ...
  • Копирование
  • вырезано
  • и т.д ...

И, если возможно - это меню будет создано автоматически, в зависимости от операционной системы.

Если это невозможно или слишком сложно - я бы хотел, по крайней мере, включить опцию «Найти на диске», которая откроет проводник Windows (или его эквивалент в другой системе) в папке файла и выберет файл.

Приложение написано на Java (JDK 7) с использованием SWT.

Ответы [ 2 ]

1 голос
/ 15 июля 2010

Посмотрите на пример того, как использовать всплывающее меню:

Snippet131

Когда вы используете метод handleEvent(), вы можете выполнить любую логикувам нужно для того, чтобы добавить пункты меню в ваше контекстное меню.

Чтобы получить поведение, специфичное для платформы, вы можете использовать System.getProperty () с комбинацией «os.name», «os.arch»и строки os.version, чтобы определить, какую платформу вы используете.Затем просто используйте операторы if для условного добавления пунктов меню в ваше меню.

0 голосов
/ 07 августа 2015

Для Windows вы можете достичь этого, но вам нужно вызвать некоторые собственные COM-методы.Я сделал это с родными звонками, возможно, это возможно с JNA.Вам нужна функциональность из IContextMenu2 .

Затем вы можете расширить класс SWT Menu, заполнить его QueryContextMenu(), создать подкласс и обработать WM_DRAWITEM, WM_MEASUREITEM, WM_INITMENUPOPUP, WM_MENUSELECT и WM_COMMAND и перенаправьте их на экземпляр IContextMenu2 через HandleMenuMsg.

...