2010-05-06 1 views
1

Ничего себе, какой глупый вопрос вы могли бы сказать. Но возможно ли это? У меня есть событие перемещения мыши в Jpanel, и оно работает даже тогда, когда приложение не находится в фокусе. Теперь у меня есть что-то подобное для события click или чего-то подобного. И самое главное, я не хочу, чтобы другие приложения (даже что-то вроде главного меню) теряли фокус, когда я нажимаю на свое приложение. Я думал о очереди событий системы, но я не уверен, к чему это приведет меня.JAVA-Я не хочу, чтобы нажимал на мое приложение, чтобы другие приложения теряли фокус.

Заранее спасибо.

[EDIT - цель] Я хочу, чтобы создать приложение, которое имитирует пользователь взаимодействие с системой в более позднее время. например, пользователь берет мышь, клики и записи, и мое приложение будет имитировать это, скажем, через 2 часа. Конечно, мне нужен системный крючок для внешних событий, но я хотел бы избежать зависимого от ОС кода, поэтому я в основном захватываю экран, переношу его в свое приложение, например, пользователь нажимает на значок в захваченном изображении, а затем для создания этого оживь, я переведу координаты на реальный значок и нажму на него (с помощью робота), и таким образом я смогу захватить события пользователя в своем приложении. проблема возникает, когда пользователь нажимает на главное меню или щелкает правой кнопкой мыши (он делает это в моем приложении, и мое приложение делает это в системе, так что мое приложение находится между ними), и, конечно, реальное главное меню будет терять фокус, когда пользователь пытается щелкнуть по одному из его предметов.

извините за мой английский.

+0

Возможно, было бы полезно, если бы вы могли сказать нам, почему вы хотели бы сделать это. – Syntactic

ответ

1

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

Я просто нашел это:

Focusable Windows

Для поддержки палитры окна и методов ввода, клиентский код может предотвратить окно стать сфокусированным окном. Благодаря транзитивности это предотвращает превращение Window или любого из его потомков в владельца фокуса. Неконцентрируемая Windows может по-прежнему иметь ОС Windows, которые могут быть сфокусированы. По умолчанию каждый кадр и диалоговое окно настраиваются. Каждое окно, которое не является фреймом или диалогом, но чей ближайший собственный фрейм или диалог отображается на экране и который имеет по крайней мере один компонент в цикле обхода фокуса, также можно настроить по умолчанию. Чтобы сделать Window неактивным, используйте Window.setFocusableWindowState (false).

В этом doucment http://java.sun.com/j2se/1.5.0/docs/api/java/awt/doc-files/FocusSpec.html

Это звучит, как это может делать то, что вы хотите.

+0

спасибо, я проверю это. – Auxiliary

+0

Вау, Еще раз спасибо, это сработало. Я получил корневое окно и установил его как не настраиваемый. :) – Auxiliary