在随机位置绘画

时间:2014-01-23 17:28:42

标签: java swing user-interface java-2d

我正在尝试在屏幕上创建100个随机矩形,但它只在左上角绘制1个。为什么这样做以及如何解决?它应该使用随机x / y变量重复绘制矩形过程100次,但它不会。

public class MazeGame extends JPanel {
    int x;
    int y;
    boolean Loc = false;
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawRect(x, y, 10, 10);
        this.setBackground(Color.RED);

    }

public void makeMaze() {
    for(int u = 1; u < 100; u++) {
        while(Loc == false) {
            int x = (int) (Math.random() * 100);
            int y = (int) (Math.random() * 100);
            System.out.println("x " + x + " " + "y " + y);
            repaint();
            Loc = true;
        }
        Loc = false;

    }
}
public void gui() {
    MazeGame game = new MazeGame();
    JFrame frame = new JFrame();
    frame.setSize(600, 600);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.add(game);
    game.makeMaze();

    frame.setVisible(true);
}
public static void main(String[] args) {
    MazeGame game = new MazeGame();
    game.gui();
}
}

1 个答案:

答案 0 :(得分:4)

你永远不会设置x和y。在循环内部,您定义了一个局部x和y变量,因此永远不会设置实例变量。删除局部变量声明。