2016-07-12 3 views
1

Я пытаюсь определить, является ли ключ, например. управляющий ключ, нажата в java DropTargetDropEvent для удаления файла ОС. Из-за изменения фокуса с браузера файлов ОС на приложение, мое понимание - это обнаружение ключа без фокуса. Некоторые сказали, что это hard or impossible без фокуса, а некоторые размещены solutions and have been accepted. Я попробовал принятое решение, но, как сказал один комментарий, он никогда не возвращает true для нажатия клавиши. У кого-нибудь есть идея?обнаружение нажатия клавиши во время java dnd

Я также попытался использовать getDropAction of DropTargetDropEvent для обнаружения управляющего ключа. В Windows и MAC, которые я тестировал, он возвращает ACTION_COPY, если управление выключено, и ACTION_MOVE в противном случае. К сожалению, он возвращает ACTION_COPY под Linux, независимо от того, нажата ли клавиша управления или нет. Любая идея переопределить действия по отбрасыванию, поддерживаемые источником перетаскивания, поэтому getDropAction не вернет ACTION_COPY под Linux, если контрольный ключ не работает?

Любые идеи и предложения приветствуются.

ответ

0

Я разместил этот вопрос в течение нескольких месяцев, но ответа нет. Проблема заключалась в том, что во время DropTargetDropEvent под Linux getDropAction дает ACTION_COPY независимо от того, нажата ли клавиша управления или нет.

Сегодня я только что разобрался с взломом для обнаружения ControlDown под Linux. Решение заключается в использовании java.awt.Robot для нажатия клавиши Shift в DragEnterCallback и отпускания ключа в DropCallback или DragExitCallback, если пользователь отменяет падение. Затем в DropCallback getDropAction будет выдавать либо ACTION_LINK, либо ACTION_MOVE в зависимости от параметра «Управление» или нет.

На самом деле это независимое от ОС решение для обнаружения ключа управления во время события сброса, хотя для Windows/MAC существует более простой способ.

Если кому-то нравится независимый от ОС метод обнаружения ключа Shift, аналогичный метод можно использовать для управления роботом в DragEnterCallback.

Смежные вопросы