多语言展示
当前在线:1296今日阅读:19今日分享:20

你知道怎么用Swing写一个进度条?

Swing是开发Java桌面应用程序GUI的JDK。本文就分享一个实现进度条的示例
工具/原料
1

IntelliJ IDEA

2

java

3

Swing

方法/步骤
1

先来段代码:package chapter4;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.concurrent.TimeUnit;/** * Created by MyWorld on 2016/3/24. */public class SwingJProgressBarDemo {    public static void main(String[] args) {        JFrame frame = new JFrame('JProgressBarDemo');        frame.setSize(400, 200);        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        frame.setLayout(new FlowLayout());        final JProgressBar progressBar = new JProgressBar();        progressBar.setOrientation(JProgressBar.HORIZONTAL);        progressBar.setSize(200, 100);        progressBar.setMinimum(0);        progressBar.setMaximum(100);        frame.add(progressBar);        JButton btn = new JButton('Start ProgressBar');        btn.addActionListener(new ActionListener() {            @Override            public void actionPerformed(ActionEvent e) {                new Thread(new Runnable() {                    @Override                    public void run() {                        for (int i = 0; i <= 10; i++) {                            progressBar.setValue(i * 10);                            try {                                TimeUnit.SECONDS.sleep(1);                            } catch (InterruptedException e1) {                                e1.printStackTrace();                            }                        }                    }                }).start();            }        });        frame.add(btn);        frame.setLocationRelativeTo(null);        frame.setVisible(true);    }}

2

执行下上面的代码,看看效果

3

功能是有,但是有一点不好进度条上显示百分比更改下代码Code:progressBar.setStringPainted(true);

4

执行一下看看效果进度条上已经有进度信息了OK

5

功能是实现了,就是感觉有点土啊使用Substance更改下皮肤更改后的代码:package chapter4;import org.jvnet.substance.skin.SubstanceAutumnLookAndFeel;import javax.swing.*;import javax.swing.plaf.metal.MetalProgressBarUI;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.concurrent.TimeUnit;/** * Created by MyWorld on 2016/3/24. */public class SwingJProgressBarDemo {    public static void main(String[] args) throws UnsupportedLookAndFeelException {        UIManager.setLookAndFeel(new SubstanceAutumnLookAndFeel());//        JFrame.setDefaultLookAndFeelDecorated(true);        SwingUtilities.invokeLater(new Runnable() {            @Override            public void run() {                final JFrame frame = new JFrame('JProgressBarDemo');                frame.setSize(400, 200);                frame.setLocationRelativeTo(null);                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);                frame.setLayout(new FlowLayout());                final JProgressBar progressBar = new JProgressBar();                progressBar.setOrientation(JProgressBar.HORIZONTAL);                progressBar.setSize(200, 100);                progressBar.setMinimum(0);                progressBar.setMaximum(100);                progressBar.setBorderPainted(true);                progressBar.setUI(new MetalProgressBarUI());                progressBar.setBackground(Color.green);                progressBar.setForeground(Color.BLUE);                progressBar.setStringPainted(true);                frame.add(progressBar);                JButton btn = new JButton('Start ProgressBar');                btn.addActionListener(new ActionListener() {                    @Override                    public void actionPerformed(ActionEvent e) {                        new Thread((new Runnable() {                            @Override                            public void run() {                                for (int i = 0; i <= 10; i++) {                                    final int finalI = i;                                    SwingUtilities.invokeLater(new Runnable() {                                        @Override                                        public void run() {                                            progressBar.setValue(finalI * 10);                                        }                                    });                                    try {                                        TimeUnit.SECONDS.sleep(1);                                    } catch (InterruptedException e1) {                                        e1.printStackTrace();                                    }                                }                            }                        })).start();                    }                });                frame.add(btn);                frame.setVisible(true);            }        });    }}

6

执行下看看效果很OKO了

推荐信息