2013-03-08 29 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