Для отладки странного поведения в приложении Swing, я хотел бы заменить AWT EventQueue своей собственной реализацией.
Действительно ли это возможно? Как?
На всякий случай Вам интересно:
реализация будет простой оберткой вокруг нормального Eventqueue, делая некоторый вход.
проблемой, которую я хотел бы отладить, является TableCellEditor, который хорошо работает в небольшом демонстрационном приложении, но при подаче реальное заявление, stopCellEditing сразу называют, из-за некоторого события. Я хотел бы получить доступ к событию для обнаружения, куда это прибывает из.
EventQueue имеет метод push(), который будет делать именно то, что вы хотите. Вот небольшая демонстрация:
public class QueueTest {
public static void main(String[] args) throws InterruptedException, InvocationTargetException {
EventQueue eventQueue = Toolkit.getDefaultToolkit().getSystemEventQueue();
eventQueue.push(new MyEventQueue());
EventQueue.invokeAndWait(new Runnable() {
public void run() {
System.out.println("Run");
}
});
}
private static class MyEventQueue extends EventQueue {
public void postEvent(AWTEvent theEvent) {
System.out.println("Event Posted");
super.postEvent(theEvent);
}
}
}