7

我尝试了 setPreferedSizesetSize方法,但对话框仍然以最小尺寸打开。

private void method() {
    commandDialog.setPreferredSize(new Dimension(100,100));
    - - - 
    - - -   //Components added to dialogPanel

    commandDialog.add(dialogPanel);

    // Tried this as well: commandDialog.setSize(40, 40);     
    commandDialog.validate();
    commandDialog.setVisible(true);
}
4

2 回答 2

20

之前不要忘记调用pack()对话框setVisible(true)

此外,这里的许多人会建议不要设置对话框的preferredSize,而是覆盖它或其内容窗格的getPreferredSize()方法,作为一种更清洁、更安全的方式来正确调整其大小。


编辑
Holger 发布:

如果仅用于返回相同的常量大小,则覆盖 getPreferredSize() 并不是更好。

我认为我们都同意getPreferredSize()通常应该避免返回一个愚蠢的常量大小(尽管它是稳定的)。大多数时候,我避免设置 size/preferredSize 或覆盖 getPreferredSize,而是尝试让我的组件和它们自己的首选尺寸以及布局管理器都自己调整大小,这又是由pack()方法启动的。有时我需要更积极地尝试设置组件的大小,例如如果我需要将组件的大小调整为背景图像,然后我将覆盖getPreferredSize()并使用图像尺寸作为返回的尺寸,或者将使用某种类型的程序逻辑来帮助确定最佳大小。但是,我们再次同意,你越少玩这个,越好。


编辑 2
Holger 发布:

...但问题是关于 JDialog 和对话框永远不会自动适应其首选大小。

同样,当您调用它们时,它们和所有顶级窗口pack()都会执行。这就是我推荐这个的原因,以及为什么这是我对他的问题的主要回答。

于 2013-11-29T20:57:38.937 回答
6

你试过了吗

commandDialog.setSize(new Dimension(100, 100));
commandDialog.setResizable(false);

?

于 2013-11-29T21:01:40.637 回答