Графический интерфейс Java не обновляется сразу - PullRequest
2 голосов
/ 15 февраля 2012

У меня есть Netbeans с кнопкой и картой. Эта кнопка имеет зарегистрированный для себя список действий и при нажатии запускает внешнюю программу с помощью process.waitFor ();

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

Нужно ли мне вызывать метод обновления на графическом интерфейсе или что-то еще?

Ответы [ 2 ]

2 голосов
/ 15 февраля 2012

Переместите ваш вызов на внешнюю программу в другой теме:

Thread t = new Thread(new Runnable() {
    public void run() {
    // call to ext. program
    }
});
t.start();
return;
2 голосов
/ 15 февраля 2012

События GUI управляются одним потоком. Вы мешаете этому потоку выполнять свою работу (обновлять отображение), запуская внешнюю программу и ожидая ее завершения; так как вы делаете это в обработчике событий, это поток, который выполняет ваш код.

Вы должны иметь отдельный поток для управления этим или использовать таймер, проверяющий, завершен ли он и т. Д.

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