有没有人能告诉下用JProgressBar能不能实现时间条的设计啊,
等进度条随时间的进行填满后而自动触发一个事件啊,但不是进度条的实现求高手指点下,添加什么监听

解决方案 »

  1.   

    你的意思是不是说让进度条随着时间改变啊    到最后触发事件
    如果是的话可以用Timer timer = new Timer(1000,new ActionListener{
    ........自己知道的哈
    });
      

  2.   

    在填满进度条的那一刻触发一个事件,那说明已经知道触发事件的原因了,不知道加一个if语句判断行不行,
    if(value == MAX_VALUE){
       //触发事件
    }
      

  3.   


    import java.awt.BorderLayout;
    import java.awt.EventQueue;import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
    import javax.swing.JProgressBar;
    import javax.swing.JLabel;
    import javax.swing.JRadioButton;
    import javax.swing.event.ChangeListener;
    import javax.swing.event.ChangeEvent;
    import javax.swing.ButtonGroup;
    public class test extends JFrame implements Runnable{ private JPanel contentPane;
    private JProgressBar pb;
    private int i=0;
    private final ButtonGroup buttonGroup = new ButtonGroup();

    public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
    public void run() {
    try {
    test frame = new test();
    frame.setVisible(true);
    new Thread(frame).start();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    });
    }

    public test() {
    setTitle("test");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 320, 118);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(null);

    JRadioButton no = new JRadioButton("\u672A\u6EE1");
    buttonGroup.add(no);
    no.setSelected(true);
    no.setBounds(50, 50, 65, 23);
    contentPane.add(no);

    final JRadioButton yes = new JRadioButton("\u5DF2\u6EE1");
    buttonGroup.add(yes);
    yes.setBounds(187, 50, 65, 23);
    contentPane.add(yes);

    pb = new JProgressBar();
    pb.setMaximum(50);
    pb.addChangeListener(new ChangeListener() {
    public void stateChanged(ChangeEvent arg0) {
    /*
     * 添加JProgressBar值改变事件,当时间走到和JProgressBar的的最大值相同的时间
     * 也就是JProgressBar填满的时候,也就是if语句中的判断未true的时候,就执行if中的
     * 语句,把单选按钮”填满“勾选上。
     * 
     */
    if(i==pb.getMaximum()){
    yes.setSelected(true);
    }
    }
    });
    pb.setBounds(0, 0, 304, 44);
    contentPane.add(pb);
    } public void run() {
    try{
    while(true){
    pb.setValue(i);
    i++;
    Thread.sleep(100);
    }
    }catch(Exception e){
    e.printStackTrace();
    }
    }
    }