我是Java Graphics的初学者,我一直试图在JFrame上绘制随机点,但不知道为什么我编译时帧上没有任何内容,因为我逻辑很好+没有错误。有人可以帮我解决这里的错误
public class parent extends JPanel {
public void PaintComponent (Graphics g)
{
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.blue);
Dimension size = getSize();
Insets insets= getInsets();
int w = size.width - insets.left - insets.right;
int h = size.height - insets.top - insets.bottom;
Random r = new Random();
for (int i=0; i<1000; i++) {
int x = Math.abs(r.nextInt()) % w;
int y = Math.abs(r.nextInt()) % h;
g2d.drawLine(x, y, x, y);
}
}
public static void main(String[] args)
{
JFrame frame = new JFrame("Points");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new parent());
frame.setSize(250, 200);
frame.setVisible(true);
}
}
答案 0 :(得分:2)
它是PaintComponent
还是应该是paintComponent
?我想我知道Java开发人员会选择哪一个。
请注意,这是一个完美的错误,注释中的@Override
会在Eclipse中捕获。
答案 1 :(得分:0)
从您的代码中,您使用DrawLine从(x,y)到(x,y)绘制。这将是一个像素。你已经设置了Color Blue。因此,无论颜色如何,它都不会非常明显。
除此之外,你的循环根据随机数R计算X和Y值,但R永远不会重新计算为新的随机数(你在循环之前设置一次,从不重置它) 。然后,这将再次重复绘制相同的点1000次。
如果你将随机数计算放在循环中,并让它在你的随机点周围绘制一个半径为哦,5-10像素的圆,那么它将更加明显。然后你应该完成你的目标。