zoukankan      html  css  js  c++  java
  • [转载]java 进度条

    原文地址:java 进度条作者:一度_何成飞

    import java.awt.Canvas;
    import java.awt.Color;
    import java.awt.Graphics;

    public class MyProgressBar extends Canvas {
     private float scaleSize;
     private float currentValue;
     
     public MyProgressBar(){
      this(100, 50);
     }
     
     public MyProgressBar(float scaleSize, float currentValue){
      this.scaleSize = scaleSize;
      this.currentValue = currentValue;
      
      this.setBackground(Color.lightGray);
      this.setForeground(Color.magenta);
      setSize(150, 25);
     }
     
     public float getCurrentValue() {
      return currentValue;
     }
     public void setCurrentValue(float currentValue) {
      this.currentValue = Math.max(0, currentValue);
      if (this.scaleSize < this.currentValue) {
       this.currentValue = this.scaleSize;
      }
     }
     public float getScaleSize() {
      return scaleSize;
     }
     public void setScaleSize(float scaleSize) {
      this.scaleSize = Math.max(1.0f, scaleSize);
      if (this.scaleSize < this.currentValue) {
       this.scaleSize = this.currentValue;
      }
     }

     public synchronized void paint(Graphics g){
      int w = getSize().width;
      int h = getSize().height;
      
      g.setColor(getBackground());
      g.fillRect(1, 1, w-2, h-2);
      g.fill3DRect(0, 0, w-1, h-1, true);
      
      g.setColor(getForeground());
      g.fillRect(3, 3, (int)(currentValue*(w-6)/scaleSize), h-6);
     }
    }

     

    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;

    import javax.swing.JButton;
    import javax.swing.JFrame;

    public class TestMyProgressBar extends JFrame implements Runnable,
      ActionListener {

     private MyProgressBar bar;
     private JButton btnStart;
     static TestMyProgressBar tmpb;

     public TestMyProgressBar() {
      setSize(400, 300);
      setLocation(400, 400);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setTitle("演示自定义进度条");
      setLayout(new FlowLayout());
      btnStart = new JButton("开始");
      this.add(btnStart);
      btnStart.addActionListener(this);
      bar = new MyProgressBar();
      setVisible(true);
     }

     public static void main(String[] args) {
      tmpb = new TestMyProgressBar();
     }

     @Override
     public void run() {
      for (int i = 1; i <= 20; i++) {
       int x = i * 5;
       bar.setCurrentValue(x);
       if (x > 0 && x < 100) {
        btnStart.setEnabled(false);
       }
       if (x == 100) {
        btnStart.setEnabled(true);
       }
       try {
        Thread.sleep(200);
        add(bar);
        
       } catch (InterruptedException e) {
        e.printStackTrace();
       }
      }
     }

     @Override
     public void actionPerformed(ActionEvent e) {
      if (e.getActionCommand().equals("开始")) {
       Thread t = new Thread(tmpb);
       t.start();
      }
     }
    }

  • 相关阅读:
    python 安装pillow
    rapidminer 数据导入及几个算子简单应用
    Fiddler高级用法-设置断点
    Linux 操作MySQL常用命令行
    VMWare虚拟机提示:另一个程序已锁定文件的一部分,打不开磁盘...模块"Disk"启动失败的解决办法
    解决VMware15 centos7 桥接模式ssh突然不能访问的问题
    新媒体运营需要什么能力?需要具备哪些运营技能?
    运营分为哪几类?具体的工作职责是什么?
    Centos7 yum安装MySQL5.7.25
    Centos7防火墙添加端口
  • 原文地址:https://www.cnblogs.com/liuzhuqing/p/7481078.html
Copyright © 2011-2022 走看看