使用2D图形在Java中绘制随机点

时间:2012-10-31 19:48:46

标签: java graphic

我是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);
     }
} 

2 个答案:

答案 0 :(得分:2)

它是PaintComponent还是应该是paintComponent?我想我知道Java开发人员会选择哪一个。

请注意,这是一个完美的错误,注释中的@Override会在Eclipse中捕获。

答案 1 :(得分:0)

从您的代码中,您使用DrawLine从(x,y)到(x,y)绘制。这将是一个像素。你已经设置了Color Blue。因此,无论颜色如何,它都不会非常明显。

除此之外,你的循环根据随机数R计算X和Y值,但R永远不会重新计算为新的随机数(你在循环之前设置一次,从不重置它) 。然后,这将再次重复绘制相同的点1000次。

如果你将随机数计算放在循环中,并让它在你的随机点周围绘制一个半径为哦,5-10像素的圆,那么它将更加明显。然后你应该完成你的目标。