Как и в случае, если вы запускаете любой вывод в кадре, каждый раз, когда вы запускаете программу, он появляется в другом месте на экране?
Как вы можете создать JFrame в случайном месте?
Ответы (3)
Используйте nextInt(int)
java.util.Random
вместе с JFrame.setLocation(int, int)
.
Например,
frame.setLocation(random.nextInt(500), random.nextInt(500));
Вы можете использовать setLocation(int, int)
JFrame
для найти JFrame
в новом месте.
Итак, поместите это в конструктор фрейма и используйте Random
< /a> для создания случайного местоположения, и ваш фрейм каждый раз будет появляться в случайном месте.
Другим вариантом было бы переопределить метод 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()
могут не возвращать правильные значения, которые вы ожидаете.
Если вы получаете сообщение об ошибке, такое как Cannot make a static reference to the non-static method nextInt(int) from the type Random
, вы можете использовать альтернативный код, frame.setLocation((int)Math.random(), (int)Math.random());
Надеюсь это поможет!