此代码将生成非常小的随机红线。我只需要生成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);
}
}
答案 0 :(得分:2)
我对这个大小的位置感到困惑。
线条大小由其笔划定义 - 有关详细信息,请参阅Stroking and Filling Graphics Primitives
我只需要生成100行......并且计时器持续5秒
最佳解决方案是使用Swing Timer
,在更新之间设置所需的延迟。 Timer
充当伪循环,因此您需要跟踪ActionListener
被调用的次数,并在达到100时停止。
然后,您可以将随机Point
放入某种List
中,并在调用paintComponent
时绘制这些点之间的线
有关详细信息,请参阅How to use Swing Timers