2013-06-14 2 views
0

Я пытаюсь использовать этот JProgressBar с помощью кнопки. Я установил видимость ProgressBar в true при нажатии кнопки и в том же коде, который я называю webservice. После получения ответа от веб-службы я установил видимость индикатора выполнения в значение false.JProgressBar работает не так, как ожидалось

Ниже приведен мой код.

Пожалуйста, помогите мне исправить это. В настоящее время ProgressBar появляется только после получения ответа.

JButton testAPI = new JButton("Test API"); 
    testAPI.setBounds(OFFSET_X + 80, OFFSET_Y + 140, 120, 30); 
    testAPI.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      prg.setVisible(true); 
      String apiKey = apiKeyText.getText(); 
      testAPI(apiKey); 
     } 
}); 
add(testAPI); 

protected void testAPI(String apiKey) { 

    StringBuilder sb = new StringBuilder(testQuery); 
    sb.append("[email protected]"); 
    RestClient client = new RestClient(); 
    try { 
     prg.setVisible(true); 
     Response s = client.invoke(sb.toString(), HttpMethod.POST); 
     prg.setVisible(false); 
     System.out.println(s); 
    } 
    catch (URISyntaxException e) { 
     e.printStackTrace(); 
    } 
} 

ответ

4

Ваш код выполнен на EDT, поэтому GUI не может перекрасить себя до завершения задачи.

Прочтите учебник Swing по телефону How to Use Progress Bars для рабочего примера, в котором используется SwingWorker.

Кроме того, ознакомьтесь с инструкцией по телефону Concurrency для получения дополнительной информации об EDT.

+0

Спасибо за помощь и указатели :) – dharam

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