Он возвратит значение разрешения экрана в виде объекта класса Dimension.
Дальше необходимо просто вычислить координаты, куда следует поместить фрейм.
Пример:
/** * Puts any Window or Frame to the centre of the screen. * * @author Cloud */ public static void centerFrame(Window frame) { Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); int x = (int) ((screenSize.getWidth() - frame.getWidth()) / 2); if (x < 0) { x = 0; } int y = (int) ((screenSize.getHeight() - frame.getHeight()) / 2); if (y < 0) { y = 0; } frame.setBounds(x, y, frame.getWidth(), frame.getHeight()); }
UPD (из комментария Tom-Trix): Есть более простой способ помещения фрейма в центр экрана - использование метода frame.setLocationRelativeTo(null). Однако следует учитывать, что данный метод будет работать только при использовании java версии выше 1.4 (первый способ работает и на более ранних версиях java). Пример :
/** * Puts any Window or Frame to the centre of the screen. * */ public static void centerFrame(Window frame) { frame.setLocationRelativeTo(null); }
Важно: вышеописанные методы следует вызывать после установки размера фрейма (вызова методов setSize(), setPrefferedSize() и т.д.), а также желательно после добавления всех необходимых компонентов на фрейм, иначе эти методы просто не сработают или сработают не так, как ожидалось. Также скорее всего они могут не совсем корректно работать для среды с несколькими мониторами (не проверял).
Можно проще:
ОтветитьУдалитьframe.setLocationRelativeTo(null)
Интересно.. спасибо, не знал
УдалитьНе работает ваш способ. Ява 1.7. Форма выводится в правом нижнем углу.
УдалитьUPD: Проблема в том, что таким способом не правильно вычисляется центр экрана если в системе два и более монитора!
УдалитьТо есть какие то костыли нужны, возможно это баг явы.
с несколькими мониторами работает нормально. но только фрейм выводится на первом мониторе.(на котором меню пуск)
ОтветитьУдалить