1

我正在模拟生物体的生长,使用生物体的 jLabels。但是,当我实现一个 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);
   }
4

1 回答 1

1

您可能会喜欢扩散受限聚合和其他模拟的这个示例。

于 2013-02-12T13:00:48.067 回答