Какой самый простой способ центрировать a java.awt.Window
, например a JFrame
или a JDialog
?
java
swing
user-interface
awt
Эндрю Свон
источник
источник
setLocation()
,setLocationRelativeTo()
иsetLocationByPlatform()
все или AWT, не свинг. ;)Ответы:
По этой ссылке
источник
pack()
и он поместил верхний левый угол рамки в центр моего экрана. После перемещения линии внизpack()
она правильно отцентрировалась.Это должно работать во всех версиях Java.
источник
setLocationRelativeTo(null)
должен вызываться после того, как вы используетеsetSize(x,y)
или используетеpack()
.источник
Обратите внимание, что методы setLocationRelativeTo (null) и Tookit.getDefaultToolkit (). GetScreenSize () работают только для основного монитора. Если вы работаете в среде с несколькими мониторами, вам может потребоваться получить информацию о конкретном мониторе, на котором находится окно, перед выполнением такого рода вычислений.
Иногда важно, иногда нет ...
Дополнительные сведения о том, как это получить, см. В документации javadocs GraphicsEnvironment .
источник
В Linux код
Помещайте мое окно в случайное место каждый раз, когда я его запускал, в среде с несколькими дисплеями. И код
"разрезать" окно пополам, поместив его точно по центру, который находится между двумя моими дисплеями. Я использовал следующий метод, чтобы центрировать его:
Заставляет окно появляться прямо в центре первого дисплея. Это, наверное, не самое простое решение.
Правильно работает в Linux, Windows и Mac.
источник
Наконец-то я получил эту кучу кодов для работы в NetBeans с использованием Swing GUI Forms для центрирования основного jFrame:
ИЛИ
ИЛИ
источник
Следующее не работает для JDK 1.7.0.07:
Он помещает верхний левый угол в центр - это не то же самое, что центрировать окно. Другой тоже не работает, включая frame.getSize () и Dimension.getSize ():
Метод getSize () унаследован от класса Component, и поэтому frame.getSize также возвращает размер окна. Таким образом, вычитая половину вертикальных и горизонтальных размеров из вертикальных и горизонтальных размеров, чтобы найти координаты x, y того места, где следует разместить верхний левый угол, вы получите местоположение центральной точки, которая в итоге также центрирует окно. Однако первая строка приведенного выше кода полезна: «Размер ...». Просто сделайте это, чтобы центрировать его:
JLabel устанавливает размер экрана. Он находится в FrameDemo.java, доступном в учебных пособиях по java на сайте Oracle / Sun. Я установил его на половину высоты / ширины экрана. Затем я центрировал его, поместив верхний левый угол на 1/4 размера экрана слева и на 1/4 размера экрана сверху. Вы можете использовать аналогичную концепцию.
источник
ниже приведен код для отображения рамки вверху по центру существующего окна.
}
} public static void main (String [] args) выдает исключение {
}
Ниже приведен вывод вышеуказанного фрагмента кода:
источник
frame.setLocation(x, 0);
кажется неправильным - разве не должно бытьframe.setLocation(x, y);
?int y = (int) ((dimension.getHeight() - frame.getHeight()) / 2);
существует в коде только для того, чтобы показать, что вы также можете центрировать по вертикальной оси? Хорошо, я думал, ты просто забыл его использовать, извините за проблемы.Есть кое-что действительно простое, что вы могли упустить из виду, пытаясь отцентрировать окно с помощью либо
setLocationRelativeTo(null)
или,setLocation(x,y)
и оно в итоге оказывается немного не по центру.Убедитесь, что вы используете один из этих методов после вызова,
pack()
потому что в конечном итоге вы будете использовать размеры самого окна, чтобы вычислить, где его разместить на экране. До тех пор,pack()
пока не будет вызван, размеры не такие, как вы думаете, что отбрасывает вычисления по центру окна. Надеюсь это поможет.источник
Пример: внутри myWindow () в строке 3 находится код, необходимый для установки окна в центре экрана.
источник
frame.setLocationRelativeTo (ноль);
Полный пример:
источник
Следующий код центрирует
Window
в центре текущего монитора (то есть там, где находится указатель мыши).источник
Вы также можете попробовать это.
источник
На самом деле frame
.getHeight()
иgetwidth()
не возвращает значения, проверьте его,System.out.println(frame.getHeight());
напрямую поместив значения для ширины и высоты, тогда он будет нормально работать в центре. например: как показано нижеоба 450 - моя ширина рамки n высота
источник
источник
Порядок звонков важен:
первый -
второй -
источник