我正在尝试使用带有按钮的JProgressBar。我点击按钮并在与网络服务相同的代码中将ProgressBar的可见性设置为true。收到来自Web服务的响应后,我将进度条的可见性设置为false。
以下是我的代码。
请帮我解决这个问题。目前,只有在收到回复后,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("officialdharam@gmail.com");
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();
}
}
答案 0 :(得分:4)
您的代码在EDT上执行,因此GUI在任务完成之前无法重新绘制。
阅读How to Use Progress Bars上的Swing教程,了解使用SwingWorker的工作示例。
另外,请阅读Concurrency上的教程,了解有关EDT的更多信息。