1
我想要做的是显示约15秒的进度条,关闭对话框,获得一个ftp回复并将回复显示给用户。下面是我的一些代码:Java - Swing;进度条
public class testFrame extends javax.swing.JFrame {...
public test() {...
BackgroundWorker bw = new BackgroundWorker();
bw.setJobNum(jobN);
bw.setFtpClient(ftpClient);
bw.setTF(this);
bw.execute();
}
}
public class BackgroundWorker extends SwingWorker<Void, Void>{...
@Override
protected void done() {
if (dialog != null) {
dialog.dispose();
System.out.println("jobNum: " + jobNum);
jobOutput = ftpClient.getJobSysOut(jobNum, true);
System.out.println("jobOutput: " + jobOutput);
System.out.println("");
JTextArea textArea = new JTextArea(jobOutput);
JScrollPane scrollPane = new JScrollPane(textArea);
textArea.setLineWrap(false);
textArea.setWrapStyleWord(true);
scrollPane.setPreferredSize(new Dimension(1000, 500));
textArea.setFont(new Font("Courier New", Font.PLAIN, 12));
JOptionPane.showMessageDialog(tf, scrollPane, "Job Output",
JOptionPane.INFORMATION_MESSAGE);
}
}
如果我尝试做的代码是上面写的我得到一个FTP错误,说的方式“软件导致连接中止:套接字写入错误。” 但是,如果我在bw.execute()后面显示消息对话框;
JOptionPane.showMessageDialog(null, "something", "Job Output",
JOptionPane.INFORMATION_MESSAGE);
并保留该对话框,直到执行BackgroundWorker中的JOptionPane,它一切正常。进度条对话框关闭,新的JOptionPane显示正确的ftp回复,但第一个带有“something”文本的JOptionPane会一直保留到用户关闭它。
我的猜测是它与模式对话框没有连接到任何父框架,但我不知道如何绕过它。
我们不确定如何在没有看到您的问题的短期自包含**可运行**示例的情况下为您提供帮助。 –
是的,这是我的担忧,我知道如果不能“看到”问题就很难回答问题。当我回家时,我会尝试编辑这个以包含可运行样本。我担心的是,如果我缩小尺寸,它可能不会起到相同的作用,但我想也许我会弄清楚。感谢您的回复! – krzasteka
“*我担心的是,如果我缩小尺寸,它可能不会起到相同的作用,但我想也许我会弄清楚。”这就是要点。 – user1803551