⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 progressbardemo.java~4~

📁 Java 程序设计源码 只提供了部分
💻 JAVA~4~
字号:
import java.awt.*;import java.awt.Toolkit;import java.awt.event.*;import javax.swing.*;public class ProgressBarDemo extends JPanel  implements ActionListener {    public final static int ONE_SECOND = 1000;    private JProgressBar progressBar;    private Timer timer;    private JButton startButton;    private LongTask task;    public ProgressBarDemo() {      super(new BorderLayout());      task = new LongTask();      startButton = new JButton("start");      startButton.addActionListener(this);      progressBar = new JProgressBar(0, task.getLengthOfTask());      progressBar.setValue(0);      progressBar.setStringPainted(true);      JPanel panel = new JPanel();      panel.add(startButton);      panel.add(progressBar);      add(panel, BorderLayout.CENTER);      timer = new Timer(ONE_SECOND,                        new ActionListener() {                          public void actionPerformed(ActionListener e) {                            progressBar.setValue(task.getCurrent());                            if(task.isDone()) {                              ToolKit.getDefaultToolKit().beep();                              timer.stop();                              startButton.setEnabled();                              setCursor(null);                              progressBar.setValue(progressBar.getMinimum());                            }                          }                        }      );    }    public void actionPerformed(ActionEvent e) {      startButton.setEnabled(false);      setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));      task.go();      timer.start();    }    public static void createAndShowGUI() {      JFrame frame = new JFrame("ProgressBar Example");      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);      JComponent newContentPane = new ProgressBarDemo();      newContentPane.setOpaque(true);      frame.setContentPane(newContentPane);      frame.pack();      frame.setVisible(true);    }    public static void main(String[] args) {      Javax.swing.SwingUtilities.invokeLater(new Runnable() {        public void run() {          createAndShowGUI();        }      });    }} class LongTask {   private int lengthOfTask;   private int current = 0;   private boolean done = false;   private boolean canceled = false;   public LongTask() {     lengthOfTask = 1000;   }   public void go() {     final SwingWorker worker = new SwingWorker() {       public Object construct() {         current = 0;         done = false;         canceled = false;         return new ActualTask();       }     };     worker.start();   }   public int getLengthOfTask() {     return lengthOfTask;   }   public int getCurrent() {     return current;   }   public void stop() {     canceled = true;   }   public boolean isDone() {     return done;   }   class ActualTask {     ActualTask() {       while(!canceled && ! done) {         try {           Thread.sleep(1000);           current += Math.random() * 100;           if(current >= lengthOfTask) {             done = true;             current = lengthOfTask;           }         }         catch(InterruptedException e) {           System.out.println("ActualTask interrupted");         }       }     }   } }abstract class SwingWorker {  private Object value;  private static class ThreadVar {    private Thread thread;    ThreadVar(Thread t) {      thread = t;    }    synchronized Thread get() {      return thread;    }    synchronized void clear() {      thread = null;    }  }  private ThreadVar threadVar;  protected synchronized void setValue(Object x) {    value = x;  }  private synchronized Object getValue() {    return value;  }  public abstract Object construct();  public void interrupt() {    Thread t = threadVar.get();    if( t != null) {      t.interrupt();    }    threadVar.clear();  }  public Object get() {    while(true) {      Thread t = threadVar.get();      if(t == null) {        return getValue();      }      try {        t.join();      }      catch(InterruptedException e) {        Thread.currentThread().interrupt();        return null;      }    }  }  public SwingWorker() {    final Runnable doFinished = new Runnable() {      public void run() {        finished();      }    };    Runnable doConstruct = new Runnable() {      public void run() {        try {          setValue(construct());        }        /*        catch(InterruptedException e) {        }*/        finally {          threadVar.clear();        }        SwingUtilities.invokeLater(doFinished);      }    };    Thread t = new Thread(doConstruct);    threadVar = new ThreadVar(t);  }  public void start() {    Thread t = threadVar.get();    if(t != null) {      t.start();    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -