.pack() 有什么作用?

2022-08-31 22:33:02

我正在学习JPanel和GridLayout,这段代码片段将生成一个带有6个按钮的简单JPanel。

package testing;


import java.io.*;
import java.util.*;
import java.security.*;
import javax.xml.bind.DatatypeConverter;
import java.lang.*;
import java.awt.*;
import javax.swing.*;

public class Testing 
{

    public static class GridPanel extends JPanel 
    {
        public GridPanel()
        {
            setLayout(new GridLayout(2,3));
            setBackground(Color.GREEN);
            this.setPreferredSize(new Dimension(500,500));

            JButton b1 = new JButton ("Button 1");
            JButton b2 = new JButton ("Button 2");
            JButton b3 = new JButton ("Button 3");
            JButton b4 = new JButton ("Button 4");
            JButton b5 = new JButton ("Button 5");
            JButton b6 = new JButton ("Button 6");

            add(b1);
            add(b2);
            add(b3);
            add(b4);
            add(b5);
            add(b6);
        }

    }



    public static void main(String[] args) 

    {
       GridPanel gp = new GridPanel();
       JFrame jf = new JFrame();
       jf.add(gp);
       jf.pack(); //code wouldnt work if i comment out this line
       jf.setVisible(true);

    }

}

我想知道为什么我的代码不能工作,如果我注释掉jf.pack()


答案 1

Pack 方法调整框架的大小,使其所有内容物都等于或高于其首选尺寸。打包的另一种方法是通过调用 setSizesetBounds(同时设置帧位置)来显式建立帧大小。通常,使用 pack 比调用 setSize 更可取,因为 pack 让框架布局管理器负责框架大小,而布局管理器擅长根据平台依赖关系和影响组件大小的其他因素进行调整。

Java 教程

当您需要有关任何Java API的其他信息时,您还应该参考Javadocs。


答案 2

该方法在 Java 中被定义为 Window 类,它调整框架的大小,使其所有内容都等于或高于其首选大小。pack()


推荐