我无法使 pack() 方法起作用。我尝试了几件事。我的代码现在看起来像这样:
第 1 类:
public static void main( String[] args )
{
java.awt.EventQueue.invokeLater(new Runnable() {
public void run()
{
JavaGui mygui = new JavaGui();
// mygui.setSize(1154, 753);
mygui.setVisible(true);
mygui.pack();
第 2 类:
public class JavaGui extends javax.swing.JFrame
{
public JavaGui()
{
getContentPane().setLayout(null);
..
getContentPane().add(panelLeft);
...
getContentPane().add(panelRight);
我试过将 pack 方法放在所有地方,但这种添加 gui 元素的方法不起作用。任何建议为什么?我还尝试将所有内容添加到 JFrame 而不是 getContentPane(),但我也无法做到这一点。
最佳答案
- 不要将空布局与
pack()
一起使用。 pack 方法告诉布局管理器和组件以最佳方式调整自己的大小,如果您改为使用空布局,则 gui 有缩小到最小尺寸的风险,因为没有布局将它们放在一起。 - 在大多数情况下根本不要使用空布局。使用这些风险会导致您创建几乎不可能扩展、改进和调试的僵化 GUI。
- 不要使用
setSize(...)
和pack()
。布局主要遵循组件的首选大小,而不是它们的大小。
相反:
- 使用嵌套 JPanel 的令人愉悦且合理的组合,每个嵌套 JPanel 使用自己的布局管理器。
- 让组件和布局管理器自行调整大小。
- 那么 pack 应该会有所帮助。
- 我执行的一般顺序是将所有组件添加到 GUI,然后调用
pack()
,然后是setLocationByPlatform(true)
(我认为),然后setVisible(true)
.
如需更好的帮助,请查看 Swing Layout Manager Tutorials .
以下是本网站上使用各种布局管理器的其他问题的几个示例:
关于java - 使用 Java pack() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25754454/