Фактический размер JFrame не совпадает с задаваемым

230
30 марта 2017, 19:28

Программирую на Java на MacOS. Разрешение экрана 2560х1600, однако при создании объекта типа JFrame с заданным размером 1200х900 или более объект уже не влезает в экран. С чем это связано и как это решить? С кодом все просто:

JFrame frame = new JFrame();
frame.setBounds(0,0,1200,900);
frame.setLayout(null);
frame.setVisible(true);

Более того этот код:

JFrame frame = new JFrame();
frame.setBounds(0,0,3000,3000);
frame.setLayout(null);
frame.setVisible(true);
System.out.println(frame.getWidth() + "x" + frame.getHeight());

выводит 1280x773.

Возможно, я неправильно поставил вопрос: Почему JFrame размера 1280х773 полностью заполняет экран?

Answer 1

Так как у вас используется Retina, то по умолчанию все увеличивается в 2 раза. Иначе все бы выглядело очень маленьким и было бы сложно, что-либо разобрать.

Масштаб задается в классе sun.awt.CGraphicsDevice. Вот кусочек из OpenJDK

public final class CGraphicsDevice extends GraphicsDevice
        implements DisplayChangedListener {
    private volatile int scale;

Проверить можно вот так

Toolkit.getDefaultToolkit().getDesktopProperty("apple.awt.contentScaleFactor")
READ ALSO
Сортировка с помощью лямбда-выражений

Сортировка с помощью лямбда-выражений

Как отсортировать массив(лист) строк с помощью лямбды по убыванию?

271
Как запускать программу через файл и читать его?

Как запускать программу через файл и читать его?

Есть файл blatest, нужно чтобы когда я на него нажимал он открывал мою программу и в ней считывался этот файл

235
orionhub как создать и запустить проект java

orionhub как создать и запустить проект java

Подскажите пожалуйста как создать и запустить проект java на orionhub?

236