2016-04-21 38 views
0

我正在构建一个程序并在多个操作系统上对其进行处理。 Windows 10和Windows 7.当我为Windows 10或Windows 7正确设置最小大小时,它适用于该操作系统,但会混淆其他操作系统。有没有办法让setMinimumSize调整边界厚度?或者有没有办法获得该操作系统边框的厚度?或者有没有办法将JFrame的最小尺寸设置为打开时的大小?任何帮助表示赞赏。谢谢。如何设置JFrame的最小尺寸并调整框架厚度?

回答

4

请勿设置最小尺寸。布局经理的工作是确定组件的大小。布局管理器将在所有操作系统上完成它的工作。

所有你需要做的就是将组件添加到您的面板/帧,然后使用:

frame.pack(); 
frame.setVisible(); 

pack()方法调用布局管理器,以便所有的组件将是适当的大小。

阅读有关Layout Managers的Swing教程的部分以获取更多信息和工作示例。我建议你将教程加入书签,以便教程所有Swing基础知识。

我不希望用户能够设置框架的大小低于一定的大小。

当一个应用程序告诉我我可以制作框架有多小(大)时,这是非常烦人的。桌面是我的空间,如果我想让它变小(更大),那么你不应该在意。如果我缺少信息,我可以稍后将框架放大(更小)。您的框架设计应该灵活以允许调整大小。

在任何情况下,你可以通过做类似设置最低:

frame.pack(); 
frame.setVisible(); 
frame.setMinimumSize(frame.getSize()); 
+0

我这样做是为了初步设置大小,但是对于程序的持续时间,我不希望用户能够将帧的大小设置为低于特定大小。 –

+0

@GnarlyNwwhal,见编辑... – camickr

+0

好的,谢谢。我将它设置为最小尺寸的原因是因为我创建的游戏是一个集合尺寸。它为所有的精灵使用了BufferedImages,所以我没有办法让它在java中扩展它们。如果您对如何使这一点更好有任何想法,我会非常感激。 –

-1

我只是碰到了使用Java 8 MacOS的这样一个问题,我希望用户能够调整窗口的大小,但服从由布局管理器计算的最小尺寸。不幸的是,控制窗口大小的AWT代码只有在明确设置的情况下才会查看最小大小。

这是我提出的解决方案。我重写在框架上的doLayout()方法:

@Override 
public void doLayout() 
{ 
    super.doLayout(); 

    LayoutManager m = getLayout(); 
    if (m != null) { 
     Dimension d = m.minimumLayoutSize(this); 
     setMinimumSize(d); 
    } 
} 

现在,每次布局重新计算时间,新的最小大小被缓存为一个明确的设定值,让AWT会注意它。

相关问题