Разница между Java 8 и Java 12, JFrame # setExtendedState не работает с JFrame # setPreferredSize - PullRequest
0 голосов
/ 29 апреля 2020

Я хочу создать JFrame, который изначально был развернут и имеет определенный размер, до которого он сжимается, когда пользователь нажимает кнопку максимизации.

Минимальный пример:

package minimalfullscreenexample;

import java.awt.Dimension;
import static java.awt.Frame.MAXIMIZED_BOTH;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class MinimalFullscreenExample {

    public void displayFrame() {
        JFrame frame = new JFrame("Minimal example");
        frame.setExtendedState(MAXIMIZED_BOTH);
        frame.setPreferredSize(new Dimension(500, 300));
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(()  -> { new MinimalFullscreenExample().displayFrame(); });
    }
}

Ожидаемое поведение: Окно открывается максимально. Когда пользователь нажимает кнопку «Развернуть», окно становится не развернутым и имеет размер 500x300 пикселей.

Это работает как следует с

  • Linux, oracle jdk 1.8.0_201
  • Linux, openjdk 1.8.0_252
  • Linux, openjdk 11.0.7
  • Linux, openjdk 12.0.1
  • Windows, oracle jdk 1.8.0.171 (старая версия, я знаю, но ... пример работает)

Это НЕ работает с

  • Windows, openjdk 12.0.1

, где окно открывается не развернуто.

Когда вызов setPreferredSize удален, окно открывается развернуто, но сужается до " Ничего "на не максимизации.

Есть какие-либо известные ошибки или обходные пути для этого? (Перемещение setPreferredSize выше setExtendedState не помогает).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...