Java制作进度条
【效果圖】
【描述】
進(jìn)度條寬度保持和窗口寬度一致,進(jìn)度最小值為0,最大值為100,每100毫秒進(jìn)度值+1,進(jìn)度條中間顯示進(jìn)度百分比
【代碼】
package test;import java.awt.*; import java.awt.event.*;import javax.swing.*;public class Test extends JFrame {private JPanel panel;private JProgressBar progressBar;private int value = 0;private static final int PROGRESS_MIN_VALUE = 0;private static final int PROGRESS_MAX_VALUE = 100;private static final int PROGRESS_HEIGHT = 20;private Timer timer;public Test() {this.setBounds(10, 10, 300, 80);// this.setExtendedState(JFrame.MAXIMIZED_BOTH); // 最大化// this.setLocationRelativeTo(null);// 使窗口顯示在屏幕中央this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);panel = new JPanel();// panel.setBackground(new Color(228, 209, 168));progressBar = new JProgressBar();progressBar.setMaximum(PROGRESS_MAX_VALUE);progressBar.setMinimum(PROGRESS_MIN_VALUE);progressBar.setValue(value);progressBar.setPreferredSize(getNewDimension());// 監(jiān)聽窗口大小,設(shè)置進(jìn)度條寬度為窗口寬度(但是對(duì)于最大化和還原窗口無效,原因未知<-_->)this.addComponentListener(new ComponentAdapter() {@Overridepublic void componentResized(ComponentEvent e) {int width = getWidth();// System.out.println("componentResized...width=" + width);progressBar.setPreferredSize(getNewDimension());}});// 監(jiān)聽窗口最大化和還原,設(shè)置進(jìn)度條寬度為窗口寬度this.addWindowStateListener(new WindowAdapter() {@Overridepublic void windowStateChanged(WindowEvent state) {if (state.getNewState() == 1 || state.getNewState() == 7) {// System.out.println("窗口最小化");} else if (state.getNewState() == 0) {// System.out.println("窗口恢復(fù)到初始狀態(tài)");progressBar.setPreferredSize(getNewDimension());} else if (state.getNewState() == 6) {// System.out.println("窗口最大化");progressBar.setPreferredSize(getNewDimension());}}});// 設(shè)置進(jìn)度條中間顯示進(jìn)度百分比progressBar.setStringPainted(true);// 進(jìn)度條進(jìn)度的顏色progressBar.setForeground(new Color(46, 145, 228));// 進(jìn)度條背景的顏色progressBar.setBackground(new Color(220, 220, 220));panel.add(progressBar);this.add(panel);// 定時(shí)器,每100毫秒進(jìn)度值+1timer = new Timer(100, new AbstractAction() {@Overridepublic void actionPerformed(ActionEvent e) {if (value >= PROGRESS_MAX_VALUE) {// 結(jié)束定時(shí)器timer.stop();// System.out.println("------------value=" + value);} else {// 設(shè)置進(jìn)度值value++;progressBar.setValue(value);// System.out.println("actionPerformed...value=" + value);}}});timer.start();this.setVisible(true);}public Dimension getNewDimension() {return new Dimension(this.getWidth(), PROGRESS_HEIGHT);}public static void main(String[] args) {new Test();} }【說明】
上訴代碼保留了之前測(cè)試的一些代碼,已注釋。
總結(jié)
- 上一篇: Java渐变进度条_很好看的java进度
- 下一篇: Java-集合练习题(1)