Java cómo hacer JFrames maximizado pero no redimensionable

Originalmente (ver mi pregunta anterior "Java cómo hacer que JFrames comience como una ventana maximizada") Quería hacer una ventana que empiece maximizada. Este código logra esto:

public static void main(String[] args)  {

JFrame frame = new JFrame();
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setVisible(true);

}

Sin embargo, si esta ventana se restaura hacia abajo, se convierte en una barra prácticamente inexistente. Para resolver esto, establezco un tamaño para la ventana usando setSize (). Esto funciona pero presenta otro problema, la ventana todavía puede ser redimensionada.

Para resolver este problema establezco setResizable (falso); y este es mi código hasta ahora:

public static void main(String[] args) {

    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

    JFrame frame = new JFrame("Jedia");
    frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
    frame.setSize(screenSize);
    frame.setResizable(false);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

Sin embargo, ahora la ventana comienza en su tamaño especificado (en lugar de maximizado) y no se puede restaurar.

Entonces, mi pregunta es, ¿cómo puedo hacer que la ventana comience al máximo, darle un tamaño para cuando se restaure y hacer que el cambio de tamaño sea imposible? ¿O hacer una ventana que comienza maximizada y no se puede restaurar hacia abajo?

Respuestas a la pregunta(4)

Su respuesta a la pregunta