Я хочу создать 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 (старая версия, я знаю, но ... пример работает)
Это НЕ работает с
, где окно открывается не развернуто.
Когда вызов setPreferredSize
удален, окно открывается развернуто, но сужается до " Ничего "на не максимизации.
Есть какие-либо известные ошибки или обходные пути для этого? (Перемещение setPreferredSize
выше setExtendedState
не помогает).