与在帧中运行任何输出时一样,每次运行程序时,它都会弹出屏幕上的其他位置?
答案 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());
希望这会有所帮助!