Mega Code Archive

 
Categories / Java / Swing JFC
 

Swing invoke and wait

/* Code from Desktop Java Live Source URL: http://www.sourcebeat.com/downloads/ */ import javax.swing.*; import java.lang.reflect.InvocationTargetException; public class InvokeAndWaitExample extends JPanel {     private Thread progressThread;     private JProgressBar progressBar;     private boolean keepRunning;     public InvokeAndWaitExample() {         this.keepRunning = true;         this.progressThread = new ProgressThread();         this.progressBar = new JProgressBar();         this.progressBar.setMaximum(100);         add(this.progressBar);         System.out.println(keepRunning);         this.progressThread.start();     }     private class ProgressThread extends Thread {         public void run() {             int count = 0;             while (keepRunning) {                 try {                     Thread.sleep(40);                 } catch (InterruptedException e) {                 }                 final int cval = count;                 SwingUtilities.invokeLater(new Runnable() {                     public void run() {                         progressBar.setValue(cval);                     }                 });                 count++;                 if (count == 101) {                     count = 0;                 } else if (count == 50) {                     final int[] returnValue = new int[1];                     try {                         SwingUtilities.invokeAndWait(new Runnable() {                             public void run() {                                 returnValue[0] = JOptionPane.showConfirmDialog(progressBar, "Would you like to reset progress?", "Prompt", JOptionPane.YES_NO_OPTION);                             }                         });                         if (returnValue[0] == JOptionPane.YES_OPTION) {                             count = 0;                         }                     } catch (InterruptedException e) {                         e.printStackTrace();                     } catch (InvocationTargetException e) {                         e.printStackTrace();                     }                 }             }         }     }     public static void main(String[] a){       JFrame f = new JFrame();       f.setDefaultCloseOperation(1);       f.add(new InvokeAndWaitExample());       f.pack();       f.setVisible(true);     }       }