【发布时间】:2010-12-28 07:53:09
【问题描述】:
这快把我逼疯了。当我在设计模式下为我的窗口设置适当的大小时,它只是忽略这个大小并在我编译和运行时使用其他东西。即使很难我设置 minimumSize 和 preferredSize 它只是忽略了这个......为什么?如何设置自己的尺寸?
【问题讨论】:
-
你是用鼠标拖动还是设置属性?
这快把我逼疯了。当我在设计模式下为我的窗口设置适当的大小时,它只是忽略这个大小并在我编译和运行时使用其他东西。即使很难我设置 minimumSize 和 preferredSize 它只是忽略了这个......为什么?如何设置自己的尺寸?
【问题讨论】:
即使您使用minimumSize 和preferredSize 设置了大小,您也可能忘记调用Window.pack(),Swing 将在其中根据设置的大小调整组件(及其所有子组件)的大小。
设置好所有首选尺寸后,您可以在窗口(或构建窗口的任何内容)中调用它。
您也可以使用Component.setSize() 方法,但它是comes with some caveats。
【讨论】:
pack()。这取决于您的布局代码在哪里(通常在构造函数中)。
您是否检查过您是否真的设置了 JFrame 或包含的 JPanel 的大小?
你试过setSize吗?
【讨论】:
我发现自己在使用 netbeans ide 时遇到了类似的情况。我阅读了以下主题,这很有帮助:
http://forums.netbeans.org/ptopic28011.html
似乎 swing 应用程序框架正在将应用程序的窗口大小保存在您主目录中的子文件夹中(对于 Windows,“应用程序数据”文件夹,对于 Linux,在您的“~/”主文件夹中)。
例如,对于我的应用程序“CrapApp”,swing 将一些最后窗口大小信息保存到子文件夹“~/.CrapApp/”中,保存到名为“mainFrame.session.xml”的文件中。
因此,无论我如何在设计器中调整窗口大小,在运行时,它似乎都忽略了它,而是从该子文件夹中的首选项中加载了窗口大小。
所以我的解决方案是删除这个保留的设置子文件夹,例如,在我的例子中,“rm -rf ~/.CrapApp/”
然后问题就消失了,我可以在设计器中重新调整大小并运行应用程序,这个重新调整大小的窗口现在可见。
这让我想了解是什么引发了这个问题。我注意到在 netbeans ide 中简单地运行应用程序并关闭它并不会生成子文件夹。
在对我的应用进行了一些修改后,我注意到以下操作触发了这个“~/.CrapApp/”子文件夹的生成。
现在“~/.CrapApp/”子文件夹重新出现。这个帮助/关于对话框是由 netbeans ide 自动生成的,所以我并没有真正修改它,但这似乎是我的罪魁祸首。
也许它可能是 netbeans ide 中的一个错误,我使用的是一个有点旧的版本 (v6.8),它看起来也大致来自你原始帖子的时代。
【讨论】: