Я делаю приложение, которое берет данные из API, но требуется некоторое время (например, 1 или 2 секунды), я хочу использовать JProgressBar, чтобы показать, сколько данных загружено, здесь мой код:Использование JProgressBar в Java
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String snum;
try
{
curfrom=(String)fromList.getSelectedItem();
curto=(String)toList.getSelectedItem();
snum=curval.getText();
address="http://rate-exchange.appspot.com/currency?from="+curfrom+"&to="+curto+"&q="+snum;
url=new URL(address);
connect=url.openConnection();
br=new BufferedReader(new InputStreamReader(connect.getInputStream()));
output=br.readLine();
String[] split = output.split("\"");
res=split[12];
res=res.replace(" ", "");
res=res.replace(":", "");
res=res.replace("}", "");
result.setText(snum+" "+curfrom+" = "+res+" "+curto);
}
catch(Exception e)
{
result.setText("Error! Please check the Problem(e.g. Net)");
JOptionPane.showMessageDialog(null, "An Error has Occured!", "Error!", JOptionPane.ERROR_MESSAGE);
}
}
Я думал сделать прогресс бар, который будет загружать и показывать ему значение с помощью JProgressBar.setStringPainted(true)
, но когда я обновляю его помощью for
петли, как:
for(i=0;i<=100;i+=10)
{
bar.setValue(i);
try
{
Thread.sleep(100);
}
catch (InterruptedException ex)
{
Logger.getLogger(MainApp.class.getName()).log(Level.SEVERE, null, ex);
}
}
но когда я запускаю это код, и он начинает загружаться, он появляется на 100 миллисекунд, а затем loa ds, я не вижу анимацию, которая, как мне кажется, должна отображаться этим кодом. Я хочу увидеть анимацию.
Заранее спасибо.
Не вызывайте Thread.sleep. Используйте ['SwingWorker'] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html) –
Во-первых, взгляните на [Параллелизм в Swing] (http://docs.oracle .com/javase/tutorial/uiswing/concurrency /), в частности [Worker Threas и SwingWorker] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html) и [это] (http : //stackoverflow.com/questions/20739488/swingworker-in-multithreaded-jframes/20739571#20739571) для примера – MadProgrammer