InvokeAndWaitExample.java Source code

Java tutorial

Introduction

Here is the source code for InvokeAndWaitExample.java

Source

/*
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);
    }

}