Java制作进度条
【效果圖】
【描述】
進度條寬度保持和窗口寬度一致,進度最小值為0,最大值為100,每100毫秒進度值+1,進度條中間顯示進度百分比
【代碼】
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());// 監聽窗口大小,設置進度條寬度為窗口寬度(但是對于最大化和還原窗口無效,原因未知<-_->)this.addComponentListener(new ComponentAdapter() {@Overridepublic void componentResized(ComponentEvent e) {int width = getWidth();// System.out.println("componentResized...width=" + width);progressBar.setPreferredSize(getNewDimension());}});// 監聽窗口最大化和還原,設置進度條寬度為窗口寬度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("窗口恢復到初始狀態");progressBar.setPreferredSize(getNewDimension());} else if (state.getNewState() == 6) {// System.out.println("窗口最大化");progressBar.setPreferredSize(getNewDimension());}}});// 設置進度條中間顯示進度百分比progressBar.setStringPainted(true);// 進度條進度的顏色progressBar.setForeground(new Color(46, 145, 228));// 進度條背景的顏色progressBar.setBackground(new Color(220, 220, 220));panel.add(progressBar);this.add(panel);// 定時器,每100毫秒進度值+1timer = new Timer(100, new AbstractAction() {@Overridepublic void actionPerformed(ActionEvent e) {if (value >= PROGRESS_MAX_VALUE) {// 結束定時器timer.stop();// System.out.println("------------value=" + value);} else {// 設置進度值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();} }【說明】
上訴代碼保留了之前測試的一些代碼,已注釋。
總結
- 上一篇: Java渐变进度条_很好看的java进度
- 下一篇: 大学生IT网络创业计划书