Swing invoke and wait : Swing Utilities « Swing JFC « Java






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


           
         
    
    
    
  








Related examples in the same category

1.Swing Utilities getWindowAncestor
2.Swing invoke later
3.Getting the JFrame of a Component
4.Convert a coordinate relative to a component's bounds to screen coordinates
5.Convert a coordinate on a screen to a coordinate relative to a component's bounds
6.Handle long-running tasks in a Swing application
7.Swing worker Example
8.Center that window on the given desktop.
9.Returns the usable area of the screenReturns the usable area of the screen
10.Converts a Swing key stroke descriptor to a familiar Emacs-like nameConverts a Swing key stroke descriptor to a familiar Emacs-like name
11.Get Owning Frame for Component
12.Get Screen Bounds For
13.Get Top Frame
14.Get Top Level Ancestor
15.Change the sizes of all the passed buttons to be the size of the largest one.
16.Using SwingUtilities.updateComponentTreeUI to update UI by platform settingsUsing SwingUtilities.updateComponentTreeUI to update UI by platform settings
17.Repaints the parent of the given component.
18.Gets the root pane of the given component.
19.Gets the root pane of the window.
20.Gets the layered pane of the window of the given component.
21.Gets the content pane of the given window.
22.Verifies if the given point is visible on the screen.
23.Determines if the component is visible in its window at the given screen location.