Java Swing How to - Resize JFrame to only something smaller than set size








Question

We would like to know how to resize JFrame to only something smaller than set size.

Answer

import java.awt.Dimension;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
/*ww w .j  a va 2s.c  o m*/
import javax.swing.JFrame;

public class Main {
  public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.setMaximumSize(new Dimension(350, 250));
    frame.addComponentListener(new ComponentAdapter() {
      public void componentResized(ComponentEvent evt) {
        Dimension size = frame.getSize();
        Dimension max = frame.getMaximumSize();
        if (size.getWidth() > max.getWidth()) {
          frame.setSize((int) max.getWidth(), (int) size.getHeight());
        }
        if (size.getHeight() > max.getHeight()) {
          frame.setSize((int) size.getWidth(), (int) max.getHeight());
        }
      }
    });
    frame.setSize(200, 100);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}