Я пытаюсь эмулировать события клика в Swing, используя следующий код:
event = new MouseEvent(target, MouseEvent.MOUSE_PRESSED, ...)
java.awt.Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(event);
event = new MouseEvent(target, MouseEvent.MOUSE_RELEASED, ...)
java.awt.Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(event);
event = new MouseEvent(target, MouseEvent.MOUSE_CLICKED, ...)
java.awt.Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(event);
Это нормально работает для большинства компонентов, но проблема в том, что компонент генерирует свои собственные события, например, если компонент получает MOUSE_PRESSED, он генерирует некоторые события и отправляет их с dispatchEvent (newEvent); При обычном щелчке порядок событий будет:
MOUSE_PRESSED
newEvent
MOUSE_RELEASED
MOUSE_CLICKED
Но из-за моего кода порядок:
MOUSE_PRESSED
MOUSE_RELEASED
MOUSE_CLICKED
newEvent
И это нарушает логику приложения. Я могу легко это исправить, добавив вызовы Thread.sleep () между моими вызовами postEvent (), но я не хочу этого делать, так как этот метод вызывается часто, и я не хочу, чтобы он был медленным, особенно с учетом текущего код работает в 95% случаев.
Как бы я эмулировал последовательность событий, позволяющую создавать новые события между ними? У меня нет доступа к коду компонента, поэтому я могу только изменить свой метод эмуляции.