在java swing中设置窗口的最小大小限制

我有一个JFrame ,在GridBagLayout中3个JPanel ..

现在,当我最小化窗口时,在一定限制之后,第三个JPanel趋于消失。 我尝试使用setMinimumSize(new Dimension(int,int))设置最小化JFrame的大小但没有成功。 窗户仍然可以最小化。

所以,我实际上想做一个门槛,我的窗口在一定限度后无法最小化。

我怎么能这样做?

码:-

import java.awt.Dimension; import javax.swing.JFrame; public class JFrameExample { public static void main(String[] args) { JFrame frame = new JFrame("Hello World"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setMinimumSize(new Dimension(400, 400)); frame.setVisible(true); } } 

也:

 shadyabhi@shadyabhi-desktop:~/java$ java --showversion java version "1.5.0" gij (GNU libgcj) version 4.4.1 Copyright (C) 2007 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Usage: gij [OPTION] ... CLASS [ARGS] ... to invoke CLASS.main, or gij -jar [OPTION] ... JARFILE [ARGS] ... to execute a jar file Try `gij --help' for more information. shadyabhi@shadyabhi-desktop:~/java$ 

给我输出像

替代文字

**更新:**同样在运行时Netbeans IDE提供预期输出。当我运行“java JFrameExample”编译器时,我遇到问题..现在,这意味着什么?

文档告诉我,这种行为是依赖于平台的。 特别是,因为以下示例代码在Windows Vista中根据需要适用于我:

 import java.awt.Dimension; import javax.swing.JFrame; public class JFrameExample { public static void main(String[] args) { JFrame frame = new JFrame("Hello World"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setMinimumSize(new Dimension(100, 100)); frame.setVisible(true); } } 

实际上有一种方法可以确保任何平台上的最小尺寸。 您需要将JFrame的最小大小设置为其内容窗格的最小大小,然后您需要编写ComponentAdapter并覆盖componentResized。 然后,您只需在JFrame上使用getSize和getMinimum大小,并将宽度和/或高度替换为最小宽度或高度(如果它更大)。 假设您正在扩展JFrame:

 this.addComponentListener(new ComponentAdapter(){ public void componentResized(ComponentEvent e){ Dimension d=YourJFrame.this.getSize(); Dimension minD=YourJFrame.this.getMinimumSize(); if(d.width