Как вы можете создать JFrame в случайном месте? - PullRequest
2 голосов
/ 26 мая 2010

Как при запуске любого вывода в кадре, каждый раз, когда вы запускаете программу, она появляется на другой позиции на экране?

Ответы [ 2 ]

3 голосов
/ 26 мая 2010

Вы можете использовать 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() могут не возвращать ожидаемых вами правильных значений.

1 голос
/ 26 мая 2010

Используйте java.util.Random nextInt(int) вместе с JFrame.setLocation(int, int).

Например,

frame.setLocation(random.nextInt(500), random.nextInt(500));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...