0

私は当初、Java Action Listener で JFrame と JPanel を数回更新しようとしていましたが、どちらも Action Listener がすべてのタスクを完了したときにのみ更新されました。元の質問へのリンクは次のとおりです( Action Listener で JFrame をリフレッシュする)。

その質問に対するフィードバックで、Swing Worker が私の問題を解決するはずだと言われました。しかし、Swing Worker を実装しても (以下を参照)、何も変わりませんでした。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();
    }
}
4

3 に答える 3