【发布时间】:2011-08-11 04:12:56
【问题描述】:
简短的版本:我需要做一些棘手的事情来让 JDialog 的 setMaximumSize() 工作吗?
完整版:我有一个 JDialog(布局管理器:BorderLayout),它包含一个滚动窗格和一个底部带有提交按钮的 JPanel。
滚动窗格包含一个 JPanel,它在系统的其他地方动态构建。
我想要的是让对话框在 JPanel 周围动态调整大小到一定大小,然后开始增长滚动条。这或多或少是默认情况下发生的情况,除了最大尺寸似乎是我的显示器的尺寸。
我认为这就是继承自 java.awt.Component 的 .setMaximumSize() 方法所做的,但设置它似乎没有任何效果。
设置首选大小确实会产生效果 - 但无论如何对话框总是那个大小,这真的不是我想要的。
(如果我在滚动窗格上设置最大/首选大小属性,效果是一样的。)
我是否遗漏了一些非常明显的东西?是否有一些我不知道的古怪 JDialog / BorderLayout / MaximumSize 交互?
【问题讨论】:
-
那个“一定大小”是怎么确定的?我在下面的回答假设它由面板的内容控制。 setMaximunSize (dont-dont-dont!) 无效的原因是 BorderLayout 不遵守最大尺寸提示
-
“特定大小”基本上是“足以容纳所有内容,除非它高于屏幕高度的一半左右。”这回答了我的另一个问题:我以前从未使用过 setMaximumSize() 方法,并且对它们不起作用感到有些吃惊。但是 - 边框布局。很高兴知道。 (现在我要回去忘记它们的存在了。)