Swing invoke later : Swing Utilities « Swing JFC « Java






Swing invoke later

    

/*
Code from Desktop Java Live Source

URL: http://www.sourcebeat.com/downloads/

*/



import javax.swing.*;
import java.awt.event.ActionEvent;

public class InvokeLaterExample extends JPanel {
    private JLabel statusArea;
    private DefaultListModel listModel;

    public InvokeLaterExample() {
        JButton button = new JButton(new LongRunningModelFillAction());
        add(button);

        JList list = new JList();
        this.listModel = new DefaultListModel();
        this.listModel.addElement("An Empty List Model");
        list.setModel(listModel);
        add(new JScrollPane(list));

        add(new JLabel("Status:"));
        this.statusArea = new JLabel();
        add(this.statusArea);
    }

    private class LongRunningModelFillAction extends AbstractAction {
        public LongRunningModelFillAction() {
            super("Fill Model");
        }

        public void actionPerformed(ActionEvent e) {
            InvokeLaterExample.this.listModel.removeAllElements();
            InvokeLaterExample.this.listModel.addElement("Calculating...");
            PopulationRunnable populationRunnable = new PopulationRunnable();
            Thread populationThread = new Thread(populationRunnable);
            populationThread.start();
        }
    }

    private class PopulationRunnable implements Runnable {
        public void run() {
            final Object[] values = new Object[100];
            for (int i = 1; i <= 100; i++) {
                values[i - 1] = "Value" + i;


                if ((i % 10) == 0) {
                    final int progress = i;
                    SwingUtilities.invokeLater(new Runnable() {
                        public void run() {
                            InvokeLaterExample.this.statusArea.setText("Calculated " + progress);
                        }
                    });
                }
                try {
                    Thread.sleep(50);
                } catch (InterruptedException e) {
                }
            }

            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    InvokeLaterExample.this.statusArea.setText("");
                    InvokeLaterExample.this.listModel.removeAllElements();
                    for (int i = 0; i < values.length; i++) {
                        InvokeLaterExample.this.listModel.addElement(values[i]);
                    }
                }
            });
        }
    }
    public static void main(String[] a){
      JFrame f = new JFrame();
      f.setDefaultCloseOperation(1);
      f.add(new InvokeLaterExample());
      f.pack();
      f.setVisible(true);
    } 
    
}

           
         
    
    
    
  








Related examples in the same category

1.Swing Utilities getWindowAncestor
2.Swing invoke and wait
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.