Как заменить AWT EventQueue собственной [закрытой] реализацией

Для отладки странного поведения в приложении Swing, я хотел бы заменить AWT EventQueue своей собственной реализацией.

Действительно ли это возможно? Как?

На всякий случай Вам интересно:

  • реализация будет простой оберткой вокруг нормального Eventqueue, делая некоторый вход.

  • проблемой, которую я хотел бы отладить, является TableCellEditor, который хорошо работает в небольшом демонстрационном приложении, но при подаче реальное заявление, stopCellEditing сразу называют, из-за некоторого события. Я хотел бы получить доступ к событию для обнаружения, куда это прибывает из.

22
задан Jens Schauder 1 July 2010 в 13:31
поделиться

1 ответ

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);
        }
    }
}
24
ответ дан 29 November 2019 в 04:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: