2013-03-08 27 views
0

如何全局压缩Matisse生成的GroupLayout以及其他空白间距,以使使用Matisse和GroupLayout生成的Swing对话框更加紧凑?马蒂斯形式太“展开”。如何全局缩小间距?

我已经使用Matisse在Java Swing中重新实现了一些最初为Visual Basic的GUI构建器中为Windows开发的大对话框。

在Swing Windows L & F中的结果与本地(特定年龄)非常相似,除了更多的“展开”。在较低的分辨率下,它们从屏幕泄漏。这是该应用的真正问题。

测量显示比Windows默认值大的比例。 (不同分辨率的Swing缩放比例也无济于事)。这包括Matisse发出的ContainerGap s和GUI组件之间由F控制的间隙。

我看过GroupLayout文档和我能找到的Matisse文档。我已经查看了L & F参数以及GroupLayout源中的ContainerGap和相关类。没有什么会把我带到需要去的地方。

所有洞见赞赏。

回答

3

有太多的方法可能是错误的,没有单一的调整点可以解决它。 Visual Basic版本肯定在其单个目标平台上看起来不错。根据设计,Swing依靠pack(),“这会导致此Window的大小适合其子组件的首选大小和布局。”首选尺寸可能因平台而异,如nested layout example所示。相反,研究可用的layouts并以集中方式使用GUI设计器,如建议here

没有简单的方法来解决GUI设计器中的布局问题而不理解Swing布局;令人高兴的是,GUI设计师是研究各种Swing布局效果的绝佳方式。

+0

谢谢。但Windows不是一个单一的目标平台。它的对话框在一系列巨大的视觉形式因素中非常有用。我理解你所说的,但最终小部件间距是'pack()'的(隐藏)参数。或者更可能的是它跨越了几个参数。我可以在'UIManage'中看到L&F的。看起来GroupLayout的差距必须通过子类来改变,但Swing通常有多种方式来完成任务,所以我问。如果差距全部乘以一个公共因素,强大的布局经理应该做合理的事情。 – Gene 2013-03-08 23:21:37

+0

从Windows平台支持Java的意义上说,我使用术语_platform_,其中不受Visual Basic支持。相关的[教程](http://docs.oracle.com/javase/tutorial/uiswing/layout/groupExample.html)解决了差距;您可能会验证设计者是否正在生成所需的代码。其他手动示例可以在此处找到(http://stackoverflow.com/a/8504753/230513)和[这里](http://stackoverflow.com/a/14858272/230513)。 NetBeans有关“GroupLayout”的帮助主题提供了有用的观点。 – trashgod 2013-03-09 02:23:29