Как проверить наличие MouseEvents в очереди - PullRequest
0 голосов
/ 05 октября 2011

Я сделал программу для просмотра фрактала, и когда пользователь нажимает, программа пересчитывает и увеличивает масштаб.Но если пользователь нажимает снова, пока программа обрабатывает первое увеличение, я хочу, чтобы оно прекратилось и сразу переходило ко второму увеличению.Однако, поскольку программа занята вычислением, событие мыши никогда не обнаруживается GUI.Как я могу убедиться, что событие мыши обрабатывается, даже если приложение занято.

Ответы [ 3 ]

3 голосов
/ 05 октября 2011

Используйте SwingWorker .Они используются для выполнения фоновых задач, которые запускаются событиями графического интерфейса пользователя (например, нажатием кнопки).

Вы можете сделать ваш SwingWorker отменяемым (предположительно, он выполняет какой-то цикл) и, если будет отправлена ​​новая задача,отмените текущий и начните следующий.

2 голосов
/ 05 октября 2011

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

http://download.oracle.com/javase/tutorial/essential/concurrency/

Потоки позволят вашему потоку пользовательского интерфейса работать в фоновом режиме, когда другой поток занят вычислением.

удачи!

0 голосов
/ 06 октября 2011

Большое спасибо за ваш вклад, но я нашел другое решение: я создал runnable для генерации нового фрактала, который запускается в цикле, который завершается, когда определенное логическое значение становится ложным. Когда графический интерфейс обнаруживает щелчок мышью, он устанавливает для этого логического значения значение false и снова запускает вычислительный поток с новыми координатами масштабирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...