绘画100个随机线 - 增加大小和速度?

时间:2017-06-13 19:48:14

标签: java swing graphics

此代码将生成非常小的随机红线。我只需要生成100行并使它们更大并且有5秒钟的计时器。我很困惑这个大小的位置。

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;

public class LinesRandom extends JPanel {

   public void paintComponent(Graphics g) {

      super.paintComponent(g);
      g.setColor(Color.red);

     for (int i = 1; i <= 100000; i++) {
        Dimension size = getSize();
        int w = size.width;
        int h = size.height;
        Random r = new Random();
        int x = (r.nextInt()) % w;
        int y = (r.nextInt()) % h;
        g.drawLine(x, y, x, y);
       repaint();
       }
     }

   public static void main(String[] args) {
      LinesRandom points = new LinesRandom();
      JFrame frame = new JFrame("Points");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.add(points);
      frame.setSize(500, 500);
      frame.setLocationRelativeTo(null);
      frame.setVisible(true);
  }
}

1 个答案:

答案 0 :(得分:2)

  

我对这个大小的位置感到困惑。

线条大小由其笔划定义 - 有关详细信息,请参阅Stroking and Filling Graphics Primitives

  

我只需要生成100行......并且计时器持续5秒

最佳解决方案是使用Swing Timer,在更新之间设置所需的延迟。 Timer充当伪循环,因此您需要跟踪ActionListener被调用的次数,并在达到100时停止。

然后,您可以将随机Point放入某种List中,并在调用paintComponent时绘制这些点之间的线

有关详细信息,请参阅How to use Swing Timers