2013-07-29 4 views
-1

Моя полоса прогресса не обновляется до тех пор, пока цикл не завершится? Почему это?Индикатор выполнения не обновляется во время цикла

for (String theURL : IPArray) { 
    URL url = new URL(theURL); 
    InetAddress address = InetAddress.getByName(url.getHost()); 
    String temp = address.toString(); 
    String IP = temp.substring(temp.indexOf("/") + 1, temp.length()); 
    URLArray.add(IP); 
    Progress.percentage = (URLArray.size() * 100)/Progress.totalToDo; 
    Progress.ipProgress.setString(Progress.percentage + "%"); 
    Progress.ipProgress.setValue(Progress.percentage); 
    Progress.ipProgress.repaint(); 
    result += IP + System.getProperty("line.separator"); 
} 

Он будет обновляться после того, как он пройдет мимо цикла, а не во время него.

+4

Отдельная тема может быть? –

+2

Да, это одна и та же проблема, которая задается два раза в неделю. Сначала выполните поиск на этом сайте, чтобы найти множество решений. –

+0

Как насчет того, чтобы вы помогли мне или направили меня на почту, где я могу найти такие ответы вместо того, чтобы быть невежественными. – TehBawz

ответ

0

Нужна новая тема.

+0

Вам может быть интересно [[this] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html)] официальное руководство (особенно о SwingWorker классе). Также [[здесь] (http://stackoverflow.com/questions/782265/how-do-i-use-swingworker-in-java)] у вас есть информация об этом классе. – Pshemo

+0

будет работать с setString & setValue, завернутым в invokeLater, общим и базовым материалом для вывода из Runnable # Thread, reapint очень трудно уже увидеть Swing GUI, ditry hack, который вызвал EDT со всех сторон, в сравнении с легким invokeLater – mKorbel

Смежные вопросы