我最初试图在 Java Action Listener 中多次更新 JFrame 和 JPanel,但两者都只会在 Action Listener 完成所有任务时更新。这是我原来的问题的链接(Refreshing a JFrame while in an Action Listener)。
我在对该问题的反馈中被告知 Swing Worker 应该解决我的问题。但是,当我实现 Swing Worker(如下所示)时,没有任何改变。只有当 Action Listener 完成所有任务时,JFrame 和 JPanel 才会更新。我的问题是,我是否遗漏了以下内容?如果没有,我如何在动作侦听器中实现这一点以及时正确更新框架和面板?
@Override
protected Integer doInBackground() throws Exception{
//Downloads and unzips the first video.
if(cameraBoolean==true)
panel.add(this.downloadRecording(camera, recording));
else
panel.add(new JLabel("Could not contact camera "+camera.getName()));
panel.repaint();
jframe.repaint();
return 1;
}
private JLabel downloadRecording(Camera camera, Recording recording){
//does a bunch of calculations and returns a jLabel, and works correctly
}
protected void done(){
try{
Date currentTime = new Timestamp(Calendar.getInstance().getTime().getTime());
JOptionPane.showMessageDialog(jframe, "Camera "+camera.getName()+" finished downloading at "+currentTime.getTime());
}catch (Exception e){
e.printStackTrace();
}
}