Как мне остановить / обойти Java-приложения, крадущие фокус в оконных менеджерах Linux

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

Диспетчер окон - fvwm, я попытался настроить его так, чтобы приложение Java было настроено так, чтобы оно не фокусировалось, и, более того, если оно когда-нибудь получит фокус, чтобы убрать его и передать другому графическому интерфейсу.

Если я запускаю это с приложением Java, оно не работает (когда мышь находится над графическим интерфейсом Java, она имеет фокус клавиатуры) - если я заменяю какой-то стандартный виджет X GUI (XEyes) вместо графического интерфейса Java, он работает как шарм , Это придает определенную уверенность утверждению (поддержанному сотрудниками fvwm), что Java не соблюдает ICCCM.

Мне интересно, решили ли другие люди эту проблему, и если да, то как. Пока у меня есть несколько вариантов, как попытаться это исправить:

1) настроить параметры Java, надеясь, что если я отключу фокус, возможно, он вернет управление фокусировкой оконному менеджеру (пока я пробовал "setFocusable (false)" на родительском JFrame. Это не сработало. A нить "http://java.sun.com/javase/6/webnotes/trouble/TSG-Desktop/html/awt.html#gdaao«указано, что вместо этого я должен делать» Window.setFocusableWindowState (false) «Рассматриваемый графический интерфейс еще не был переделан в окне, но я также не совсем уверен, что Java восстановит фокус

2) делать низкоуровневые вызовы X в программе Java с использованием JNI. Я думаю, что это, вероятно, сработает, но я никогда не играл много с низким уровнем X. Я не уверен, какие вызовы я должен использовать (XtSetKeyboardFocus () должен быть опасным для вызова ...) или как я могу определить GUI, над которым я работаю (в этом отношении fvwm был хорош, так как у них был GUI, который позволял вам нажимать на другой GUI и узнавать его «имя» и «класс»)

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