每秒执行和显示图形而不是一次

时间:2013-02-12 02:24:57

标签: java swing graphics event-dispatch-thread

我正在研究生物体的生长模拟,使用jLabel生物体。但是,当我实现一个for循环和一个计时器来尝试显示它移动时,它会冻结,然后显示标签的最终位置而不是显示它移动。有谁可以向我解释为什么会这样?

public class TestView extends FrameView {
   public TestView(SingleFrameApplication app) {
      super(app);
      initComponents();
      picture = new JLabel();
      picture.setIcon(new ImageIcon(System.getProperty("user.dir") +
            File.separator + "mouse.gif"));
      picture.setBounds(0, 0, 100, 100);
      mainPanel.add(picture);

      for (int x = 0; x < 20; x++) {
         move();
         wait(50);
      }
   }

   public static void wait(int n) {
       long t0, t1;
       t0 = System.currentTimeMillis();
       do {
           t1 = System.currentTimeMillis();
       } while (t1 - t0 < n);
   }

   public static void move() {
       picture.setBounds(picture.getX() + 5, picture.getY(), 100, 100);
   }

1 个答案:

答案 0 :(得分:1)

您可能会喜欢此diffusion limited aggregation和其他simulations的示例。