进度条2

来源:互联网 发布:阿里云真实性核验单 编辑:程序博客网 时间:2024/06/05 13:53
package progress;


import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Observable;
import java.util.Observer;


import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;




public class Progress extends javax.swing.JDialog implements ActionListener {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;


    private JProgressBar pro_JPB;


    private JPanel btn_JP;


    private JButton cancel_JB;


    private JLabel show_JL;


    NewJFrame jf;


    public Progress(NewJFrame frame) {
        super(frame, true);
        this.jf = frame;
        initGUI();
    }


    set se = new set();


    private void initGUI() {
        try {


            se.addObserver(new setObserver());
            BorderLayout thisLayout = new BorderLayout();
            getContentPane().setLayout(thisLayout);
            {
                show_JL = new JLabel();
                getContentPane().add(show_JL, BorderLayout.NORTH);
                show_JL.setPreferredSize(new java.awt.Dimension(354, 22));
            }
            {
                pro_JPB = new JProgressBar();
                pro_JPB.setMinimum(0);
                pro_JPB.setMaximum(100);
                getContentPane().add(pro_JPB, BorderLayout.CENTER);
                pro_JPB.setPreferredSize(new java.awt.Dimension(392, 27));
            }
            {
                btn_JP = new JPanel();
                getContentPane().add(btn_JP, BorderLayout.SOUTH);
                {
                    cancel_JB = new JButton();
                    btn_JP.add(cancel_JB);
                    cancel_JB.setText("\u53d6\u6d88");
                    cancel_JB.addActionListener(this);
                }
            }
            this.setBackground(Color.DARK_GRAY.brighter());
            this.setUndecorated(true);
            this.setSize(392, 90);
            this.setLocationRelativeTo(null);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    public void setMinmum(int i) {
        pro_JPB.setMinimum(i);
    }


    public void setMaxmem(int i) {
        pro_JPB.setMaximum(i);
    }


    public void setVal(int i) {
        se.setPrice(i);
    }


    /**
     * 
     * set Class->function:观察者模式的具体应用
     * 2007-4-17
     */
    class set extends Observable {
        private int price;


        public int getPrice() {
            return price;
        }


        public void setPrice(int price) {
            this.price = price;
            setChanged();
            notifyObservers(new Integer(price));
        }


    }


    class setObserver implements Observer {
        public void update(Observable obj, Object arg) {
            if (arg instanceof Integer) {
                int i = ((Integer) arg).intValue();
                pro_JPB.setValue(i);
                show_JL.setText((i - pro_JPB.getMinimum()) * 100
                        / (float) (pro_JPB.getMaximum() - pro_JPB.getMinimum())
                        + "%");
            }
        }


    }


    public void actionPerformed(ActionEvent e) {
        jf.setTh_Flag(false);
        this.setVisible(false);
    }


}



---------------------------------------------------------------------------------



package progress;


import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.WindowConstants;


public class NewJFrame extends javax.swing.JFrame {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;


    private JPanel cen_JP;


    private JButton jb;


    public static void main(String[] args) {
        NewJFrame inst = new NewJFrame();
        inst.setVisible(true);
    }


    public NewJFrame() {
        super();
        initGUI();
    }


    Progress pro;


    private void initGUI() {
        try {
            setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
            {
                cen_JP = new JPanel();
                getContentPane().add(cen_JP, BorderLayout.CENTER);
                {
                    jb = new JButton();
                    cen_JP.add(jb);
                    jb.setText("jButton1");
                    jbAction ja = new jbAction();
                    pro = new Progress(this);
                    jb.addActionListener(ja);
                }
            }
            pack();
            setSize(400, 300);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    volatile boolean th_Flag = true;


    class jbAction implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            pro.setMaxmem(100);
            pro.setMinmum(0);
            new Thread() {
                public void run() {
                    for (int i = 1; i < 100; i++) {
                        if (!isTh_Flag()) {
                            setTh_Flag(true);


                            break;
                        }
                        try {
                            Thread.sleep(100);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        pro.setVal(i);
                        System.out.println("===" + i);
                    }
                }
            }.start();
            
            new Thread() {
                public void run() {
                int i=0;
                    while(i<10000000)
                    {
                    System.out.println(i);
                    i++;
                    }
                }
            }.start();
            
            pro.setVal(0);
            pro.setVisible(true);
        }


    }


    public boolean isTh_Flag() {
        return th_Flag;
    }


    public void setTh_Flag(boolean th_Flag) {
        this.th_Flag = th_Flag;
    }
}

原创粉丝点击