Вы можете использовать setLocation(int, int)
из JFrame
, чтобы найти JFrame
в новом месте.
Итак, поместите это в конструктор фрейма и используйте Random
для генерации случайного местоположения, и ваш кадр будет всплывать в случайном месте каждый раз.
Другой вариант - переопределить метод setVisible(boolean)
JFrame.
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()
могут не возвращать ожидаемых вами правильных значений.