JAVA SWING 实现模拟进度条效果

package zikao.swing;

import javax.swing.*;
import java.awt.*;

public class JProgressBarTest {
    /*
    JProgressBar使用的步骤:

    1,创建JProgressBar的对象

    public JProgressBar(int orient,int min,int max):

    orient: 方向  min: 最小值 max: 最大值

    2,设置属性

    setBorderPainted(boolean b): 设置进度条是否有边框

    setIndeterminate(boolean newValue): 设置该进度条是不是进度不确定的精度条

    setStringPainted(boolean b): 设置进度条是否显示当前完成百分比

    3,获取和设置当前进度条的进度状况

    setValue(int n): 设置当前进度值

    double getPercentComplete(): 获取进度条的完成百分比

    String getString(): 返回进度字符串的当前值
     */
    JFrame jFrame = new JFrame("JProgressBar测试");
    JProgressBar bar = new JProgressBar(JProgressBar.HORIZONTAL, 0, 100);
    JCheckBox indeterminate = new JCheckBox("不确定进度");
    JCheckBox noBorder = new JCheckBox("不绘制边框");

    public void init() {
        //处理复选框的点击行为
        indeterminate.addActionListener(e -> {
            //获取indeterminate有没有被选中
            boolean selected = indeterminate.isSelected();
            //设置当前进度条不确定进度
            bar.setIndeterminate(selected);
            bar.setStringPainted(!selected);
        });
        noBorder.addActionListener(e -> {
            boolean selected = noBorder.isSelected();
            bar.setBorderPainted(!selected);
        });
        Box vBox = Box.createVerticalBox();
        vBox.add(indeterminate);
        vBox.add(noBorder);

        //设置进度条的默认属性

        bar.setStringPainted(true);
        bar.setBorderPainted(true);

        //把当前窗口的布局方式改为FlowLayout
        jFrame.setLayout(new FlowLayout());
        jFrame.add(vBox);
        jFrame.add(bar);

        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jFrame.pack();
        jFrame.setVisible(true);

        //TODO 通过循环模拟修改进度条的进度
        for (int i = 0; i <= 100; i++) {
            bar.setValue(i);
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {
        new JProgressBarTest().init();
    }
}

                                                                效果请看评论区B站链接

你可能感兴趣的:(菜鸟教程,java,intellij-idea)