Это
древний баг Swing'a на Windows, который скорее всего не будут исправлять. Можно поправить это дело в ручную при помощи ComponentListener'a, используйте его для отлова событий изменения размеров и вручную меняйте размеры формы. Пример:
final JFrame frame = new JFrame();
frame.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
int width = e.getComponent().getWidth();
int height = e.getComponent().getHeight();
int newWidth = width;
int newHeight = height;
if (width > 600) {
newWidth = 600;
}
if (width < 400) {
newWidth = 400;
}
if (height > 600) {
newHeight = 600;
}
if (height < 400) {
newHeight = 400;
}
if (newHeight != height || newWidth != width) {
frame.setSize(newWidth, newHeight);
}
}
});