等待对话框类

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();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值