Графический интерфейс зависает во время цикла for после нажатия кнопки

Более подробно, у меня есть цикл, который выполняет математические операции, и случай переключения, в котором он переводит эти операции, чтобы применить сложение или вычитание и т. д.

Цикл (int i) — это количество операций, которые он читает. Условие также является частью введенных операций, оно также находится внутри корпуса переключателя. Поэтому всякий раз, когда пользователь вводит это условие и число (например, j), которое должен повторять цикл, программа должна принять j и уравнять его с i, но она зависнет. Я хочу, чтобы он переходил к той части цикла, где пользователь определяет правильное условие.

графический интерфейс зависает, как только пользователь нажимает JButton, поэтому операции, написанные в TextArea, должны быть рассчитаны.


person Nee    schedule 24.05.2015    source источник


Ответы (1)


графический интерфейс зависает, когда пользователь нажимает JButton

Код, вызванный в слушателе, выполняется в файле Event Dispatch Thread (EDT). EDT отвечает за обработку событий и отрисовку графического интерфейса. Поэтому, если вы выполняете длительные задачи, когда вы нажимаете кнопку, вы заставите графический интерфейс зависать до тех пор, пока задача не завершит выполнение.

Вам нужно выполнить длительную задачу в отдельном потоке. Один из способов сделать это — использовать файл Swing Worker. Прочтите раздел руководства Swing по параллелизму для получения дополнительной информации о EDT и SwingWorker.

person camickr    schedule 24.05.2015