问题
My progress bar doesn't update until the loop has finished? Why is this?
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");
}
It will only update after it gets past the loop and not during it.
回答1:
Needed a new thread.
new Thread(new Runnable() {
String result = "";
public void run() {
for (String theURL : IPArray) {
try {
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");
} catch (Exception e) {
if ("www.".equals(e.getMessage())) {
JOptionPane.showMessageDialog(
null, "Incorrect URL. Usage: http://www.URL.com\nError = Space! Can't use gaps in list.", "Error", JOptionPane.ERROR_MESSAGE);
}
}
}
IPFrame.textAreaIP.setText(result);
GEOLookup.check(IPFrame.textAreaIP.getText());
}
}).start();
来源:https://stackoverflow.com/questions/17923509/progress-bar-not-updating-during-a-loop