0
API에서 데이터를 가져 오는 앱을 만들고 있지만 시간이 오래 걸립니다 (1 ~ 2 초 정도 소요됩니다), JProgressBar를 사용하여 얼마나 많은 데이터가 다운로드되었는지 보여주고 싶습니다. 내 코드 :Java에서 JProgressBar 사용
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 밀리 초 동안 멈춘 것처럼 보입니다. ds, 나는이 코드에 의해 보여 져야한다고 생각하는 애니메이션을 볼 수 없다. 나는 애니메이션을보고 싶다.
미리 감사드립니다.
Thread.sleep을 호출하지 마십시오. ['SwingWorker'] 사용 (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html) –
먼저 [Concurrency in Swing] (http://docs.oracle.com)을 살펴보십시오. .com/javase/tutorial/uiswing/concurrency /), 특히 [Worker Threas and SwingWorker] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html) 및 [this] (http : //stackoverflow.com/questions/20739488/swingworker-in-multithreaded-jframes/20739571#20739571) 예를 들어 – MadProgrammer