эмиссия событий в Java
Интересно откуда такой термин - эмиссия, сильно на физику похоже.
2 Все сообщения можно перехватывать в одном месте, по крайней мере в awt именно такая модель и реализована, однако как это сделать в свинге я не знаю.
откуда такой термин - эмиссияангл. emit означает "испустить", в физике имеется в виду "испустить" частицу какую-нубудь или еще чего, а тут вот "испускаются" события. В .NET еще есть библиотека System.Reflection.Emit там IL инструкции "испускаются"
поток событий поступающий от JVM к компонентам приложения? такого нет в джаве по поводу слушателя см. иерархию компонентов.
В общем мысль в этом направлении продвинулась
Toolkit.getDefaultToolkit.addAWTEventListener(
new AWTEventListener {
public void eventDispatched(AWTEvent event) {
log(event);
}
},
AWTEvent.WINDOW_EVENT_MASK |
AWTEvent.WINDOW_FOCUS_EVENT_MASK |
AWTEvent.WINDOW_STATE_EVENT_MASK |
AWTEvent.ACTION_EVENT_MASK |
AWTEvent.ITEM_EVENT_MASK |
AWTEvent.MOUSE_EVENT_MASK |
AWTEvent.MOUSE_MOTION_EVENT_MASK |
AWTEvent.KEY_EVENT_MASK |
AWTEvent.FOCUS_EVENT_MASK |
AWTEvent.COMPONENT_EVENT_MASK |
AWTEvent.CONTAINER_EVENT_MASK);
Создавать событие не нужно, т.к. компонент его генерирует сам.Что значит не нужно? Мне нужно!
Ладно. Расскажу общую задачу.
Мы сначала пишем все события в лог.
А потом проигрываем их. И прога должна без участия юзера открывать диалоги, заполнять их данными, жать кнопки…
Если можно обойтись без эмиссии, то как?
Вообще задача очень интересная, надо будет посмотреть исходники свинга, чтобы увидеть откуда реально берутся события.
PS: плз, напиши если, что придумаешь
посмотри java.awt.EventQueue
java.awt.Robot
Using the class to generate input events differs from posting events to the AWT event queue or AWT components in that the events are generated in the platform's native input queue. For example, Robot.mouseMove will actually move the mouse cursor instead of just generating mouse move events.
Робот – универсальный метод для решения этой задачи. Вообще очень забавно получилось Одно только не могу понять : когда мышь находится в области заголовка окна, будь то главное или диалоговое, события не поступают, поэтому перетащить окно за заголовок не возможно
Оставить комментарий
mama10001
Вопрос первый. Если можно вызывать эмиссию событий в Java, то как?Например создать событие myEvent = new ActionEvent(myComponent, “cmd” сделать emit(myEvent) и оно будет доставлено по назначению.
Вопрос второй. Можно ли в самой программе перехватывать весь поток событий поступающий от JVM к компонентам приложения, не внедряя в каждый компонент своего слушателя?