如何在随机位置生成JFrame?

时间:2010-05-26 14:57:53

标签: java swing random jframe

与在帧中运行任何输出时一样,每次运行程序时,它都会弹出屏幕上的其他位置?

3 个答案:

答案 0 :(得分:3)

您可以使用JFrame的{​​{3}}在新位置找到JFrame

所以,将它放在框架的构造函数中并使用setLocation(int, int)生成随机位置,每次都会在随机位置弹出框架。

另一种选择是覆盖JFrame的setVisible(boolean)方法。

public void setVisible(boolean visible){
    super.setVisible(visible);
    if (visible) {
        Random r = new Random();
        // Find the screen size
        Toolkit tk = Toolkit.getDefaultToolkit();
        Dimension d = tk.getScreenSize();
        // randomize new location taking into account
        // the screen size, and current size of the window
        int x = r.nextInt(d.x - getWidth());
        int y = r.nextInt(d.y - getHeight());
        setLocation(x, y);
    }
}

位于if (visible)块内的代码可以在构造函数中移动。 getWidth()getHieght()方法可能无法返回您期望的正确值。

答案 1 :(得分:1)

使用java.util.Random的{​​{1}}和nextInt(int)

例如,

JFrame.setLocation(int, int)

答案 2 :(得分:0)

如果您收到诸如 Cannot make a static reference to the non-static method nextInt(int) from the type Random 之类的错误 您可以使用替代代码 frame.setLocation((int)Math.random(), (int)Math.random());

希望这会有所帮助!