Advertisement
Guest User

kjhgfgihjgfgjkl/j.h,gmj,k

a guest
Dec 13th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.07 KB | None | 0 0
  1. package laba4;
  2.  
  3. import javax.swing.*;
  4. import java.awt.event.ActionEvent;
  5. import java.awt.event.ActionListener;
  6. import java.util.LinkedList;
  7. import java.util.List;
  8. import java.util.Queue;
  9. import java.util.concurrent.TimeUnit;
  10.  
  11. public class Main extends JFrame {
  12.  
  13.     private JProgressBar progressBar1,progressBar2;
  14.  
  15.     private JButton start, stop;
  16.  
  17.     private JProgressBar current;
  18.     private Queue<JProgressBar> queue;
  19.     private Task task;
  20.  
  21.     public Main() {
  22.  
  23.         createAndShowGUI();
  24.  
  25.         queue = new LinkedList<>();
  26.         queue.add(progressBar1);
  27.         queue.add(progressBar2);
  28.  
  29.     }
  30.  
  31.     private void createAndShowGUI() {
  32.         JPanel panel = new JPanel();
  33.  
  34.         progressBar1 = new JProgressBar();
  35.         progressBar1.setValue(0);
  36.         progressBar1.setStringPainted(true);
  37.         progressBar2 = new JProgressBar();
  38.         progressBar2.setValue(0);
  39.         progressBar2.setStringPainted(true);
  40.  
  41.  
  42.         start = new JButton("Start");
  43.         start.addActionListener(new ActionListener() {
  44.             @Override
  45.             public void actionPerformed(ActionEvent e) {
  46.                 start.setEnabled(false);
  47.                 stop.setEnabled(true);
  48.                 task = new Task();
  49.                 current = queue.poll();
  50.                 task.execute();
  51.             }
  52.         });
  53.         stop = new JButton("Stop");
  54.         stop.setEnabled(false);
  55.         stop.addActionListener(new ActionListener() {
  56.             @Override
  57.             public void actionPerformed(ActionEvent e) {
  58.                 task.cancel(true);
  59.                 current.setValue(0);
  60.  
  61.                 stop.setEnabled(false);
  62.                 start.setEnabled(true);
  63.  
  64.                 queue.offer(current);
  65.             }
  66.         });
  67.  
  68.         panel.add(progressBar1);
  69.         panel.add(progressBar2);
  70.  
  71.         panel.add(start);
  72.         panel.add(stop);
  73.  
  74.         setContentPane(panel);
  75.         setSize(100, 100);
  76.  
  77.         setTitle("Progress bar");
  78.         setLocationRelativeTo(null);
  79.         setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  80.  
  81.     }
  82.  
  83.     public static void main(String[] args) {
  84.         SwingUtilities.invokeLater(new Runnable() {
  85.             @Override
  86.             public void run() {
  87.                 Main main = new Main();
  88.                 main.setVisible(true);
  89.             }
  90.         });
  91.     }
  92.  
  93.     class Task extends SwingWorker<Void, Integer> {
  94.  
  95.         private int counter;
  96.  
  97.         @Override
  98.         protected Void doInBackground() throws Exception {
  99.             while (counter < 100) {
  100.                 if (isCancelled()) {
  101.                     counter = 0;
  102.                     return null;
  103.                 }
  104.                 try {
  105.                     TimeUnit.MILLISECONDS.sleep(120);
  106.                     counter++;
  107.                     publish(counter);
  108.                 } catch (InterruptedException ignored) {}
  109.             }
  110.             return null;
  111.         }
  112.  
  113.         @Override
  114.         protected void process(List<Integer> chunks) {
  115.             current.setValue(counter);
  116.         }
  117.  
  118.     }
  119.  
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement