import javax.swing.JProgressBar;
import java.awt.BorderLayout;
import java.awt.event.ComponentEvent;
import javax.swing.JPanel;
import java.awt.Toolkit;
import java.awt.event.ComponentAdapter;
import javax.swing.JFrame;
import java.awt.Cursor;
import java.awt.Dimension;
import javax.swing.JDialog;
import java.awt.Frame;
import javax.swing.JLabel;
/**
* <p>Title: 等待对话框类</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2006</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class ThreadDiag extends Thread {
private Thread currentThread = null;
private String messages = "";
private JFrame parentFrame = null;
private JDialog clueDiag = null;
private Dimension dimensions = Toolkit.getDefaultToolkit().
getScreenSize();
private JProgressBar jProg = null;
private JLabel jTip = null;
private int width = dimensions.width / 4, height = 60;
public ThreadDiag(JFrame parentFrame, Thread currentThread,
String messages, int nMax) {
this.parentFrame = parentFrame;
this.currentThread = currentThread;
this.messages = messages;
jProg = new JProgressBar(0, nMax);
initDiag();
}
protected void initDiag() {
clueDiag = new JWaitDialog(parentFrame, messages, true);
clueDiag.setCursor(new Cursor(Cursor.WAIT_CURSOR));
JPanel testPanel = new JPanel(new BorderLayout());
jTip = new JLabel("");
clueDiag.getContentPane().add(testPanel);
clueDiag.addComponentListener(new ComponentAdapter() {
public void componentMoved(ComponentEvent e) {
clueDiag.repaint();
}
public void componentResized(ComponentEvent e) {
clueDiag.repaint();
}
});
testPanel.add(BorderLayout.NORTH, jTip);
testPanel.add(BorderLayout.CENTER, jProg);
(new DisposeDiag()).start();
}
public void SetProgressStr(String strText) {
jTip.setText(strText);
jTip.repaint();
clueDiag.repaint();
}
public void SetProgressInt(int n) {
jProg.setValue(jProg.getValue() + n);
jProg.repaint();
clueDiag.repaint();
}
public void run() {
int left = (dimensions.width - width) / 2;
int top = (dimensions.height - height) / 2;
clueDiag.setSize(new Dimension(width, height));
clueDiag.setLocation(left, top);
clueDiag.show();
}
class DisposeDiag extends Thread {
public void run() {
try {
currentThread.join();
} catch (InterruptedException e) {
System.out.println("Exception:" + e);
}
clueDiag.dispose();
}
}
}