Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-矩形的随机生成_Java_User Interface_Random_Rect - Fatal编程技术网

Java-矩形的随机生成

Java-矩形的随机生成,java,user-interface,random,rect,Java,User Interface,Random,Rect,这只是我的代码的一部分,它不能像我想要的那样工作。当画循环中的矩形时,它每次都画在同一个地方,尽管我对X轴和Y轴使用了随机数。我想画矩形5次(因为它是在循环中设置的),每个都画在随机坐标上。如果整个代码是必需的,请让我知道。谢谢 public void paintComponent(Graphics g){ random=new Random(); rX=random.nextInt(500); rY=random.nextInt(500); super.

这只是我的代码的一部分,它不能像我想要的那样工作。当画循环中的矩形时,它每次都画在同一个地方,尽管我对X轴和Y轴使用了随机数。我想画矩形5次(因为它是在循环中设置的),每个都画在随机坐标上。如果整个代码是必需的,请让我知道。谢谢

    public void paintComponent(Graphics g){
    random=new Random();
    rX=random.nextInt(500);
    rY=random.nextInt(500);
    super.paintComponent(g);    

        for(int i=0;i<=5;i++){
        g.fillRect(rX,rY,20,20);
        }


    g.setColor(Color.red);
    g.fillOval(x,y,20,20);

}
公共组件(图形g){
随机=新随机();
rX=随机。下一个(500);
rY=random.nextInt(500);
超级组件(g);

对于(int i=0;i当前,您的代码只生成一次坐标。 (感谢Jon Skeet指出这一点)

如果希望它绘制五个不同的测试,则应将调用移动到循环内部的
random.nextInt

public void paintComponent(Graphics g){
    random=new Random();

    super.paintComponent(g);    

    for(int i=0; i<=4; i++){
        rX=random.nextInt(500);
        rY=random.nextInt(500);
        g.fillRect(rX,rY,20,20);
    }


    g.setColor(Color.red);
    g.fillOval(x,y,20,20);

}
公共组件(图形g){
随机=新随机();
超级组件(g);

对于(int i=0;i当前,您的代码只生成一次坐标。 (感谢Jon Skeet指出这一点)

如果希望它绘制五个不同的测试,则应将调用移动到循环内部的
random.nextInt

public void paintComponent(Graphics g){
    random=new Random();

    super.paintComponent(g);    

    for(int i=0; i<=4; i++){
        rX=random.nextInt(500);
        rY=random.nextInt(500);
        g.fillRect(rX,rY,20,20);
    }


    g.setColor(Color.red);
    g.fillOval(x,y,20,20);

}
公共组件(图形g){
随机=新随机();
超级组件(g);

对于(int i=0;i您当前正在绘制矩形六次而不是五次……但您为什么要这样做呢?您在同一个位置绘制了六次。您希望实现什么?请注意,只有在调用
paintComponent
时,您才会看到差异,这对于用户来说可能不是100%可预测的。T我的问题是,所有的矩形都在同一个地方绘制:)您当前正在绘制矩形六次而不是五次…但您为什么要这样做呢?您在同一个位置绘制了六次。您希望实现什么?请注意,只有在调用
paintComponent
时,您才会看到不同,这对于用户来说可能不到100%的可预测性。这是我的想法问题,所有矩形都在同一位置绘制:)这将在每次重新绘制时绘制6个随机矩形,而不是在5个随机位置绘制1个矩形(我就是这样理解这个问题的).不过,这比原始代码更正确,所以+1@Heuster你是对的。我想最初的目的不是在每次重新绘制时绘制不同的矩形,而是在某个事件/指定点生成它们。请注意,除非在其他地方使用
random
rX
rY
,否则它们可能会更好作为局部变量…虽然
random
可以是一个初始化一次的实例变量。这将在每次重新绘制时绘制6个随机矩形,而不是在5个随机位置绘制1个矩形(我就是这样理解这个问题的).不过,这比原始代码更正确,所以+1@Heuster你是对的。我想最初的目的不是在每次重新绘制时绘制不同的矩形,而是在某个事件/指定点生成它们。请注意,除非在其他地方使用
random
rX
rY
,否则它们可能会更好作为局部变量…尽管
random
可以是初始化一次的实例变量。