InvokeLaterDemo.java
上传用户:songled
上传日期:2022-07-14
资源大小:94k
文件大小:1k
源码类别:

进程与线程

开发平台:

Java

  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4. public class InvokeLaterDemo extends Object {
  5. private static void print(String msg) {
  6. String name = Thread.currentThread().getName();
  7. System.out.println(name + ": " + msg);
  8. }
  9. public static void main(String[] args) {
  10. final JLabel label = new JLabel("--------");
  11. JPanel panel = new JPanel(new FlowLayout());
  12. panel.add(label);
  13. JFrame f = new JFrame("InvokeLaterDemo");
  14. f.setContentPane(panel);
  15. f.setSize(300, 100);
  16. f.setVisible(true);
  17. try {
  18. print("sleeping for 3 seconds");
  19. Thread.sleep(3000);
  20. } catch ( InterruptedException ix ) {
  21. print("interrupted while sleeping");
  22. }
  23. print("creating code block for event thread");
  24. Runnable setTextRun = new Runnable() {
  25. public void run() {
  26. try {
  27. Thread.sleep(100); // for emphasis
  28. print("about to do setText()");
  29. label.setText("New text!");
  30. } catch ( Exception x ) {
  31. x.printStackTrace();
  32. }
  33. }
  34. };
  35. print("about to invokeLater()");
  36. SwingUtilities.invokeLater(setTextRun);
  37. print("back from invokeLater()");
  38. }
  39. }