java - .pack() 有什么作用?

标签 java swing jpanel

我正在学习 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()

,为什么我的代码不起作用

最佳答案

pack 方法调整框架大小,使其所有内容都等于或大于它们的首选大小。 pack 的替代方法是通过调用 setSizesetBounds (也设置帧位置)显式建立帧大小。一般来说,使用 pack 比调用 setSize 更可取,因为 pack 让框架布局管理器负责框架大小,而布局管理器擅长调整平台依赖性和其他影响组件大小的因素。

来自 Java tutorial

您还应该引用 Javadocs任何时候您需要有关任何 Java API 的更多信息

关于java - .pack() 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22982295/

相关文章:

java - 覆盖 Swing 类的 toString()

java - 如何让这个面板作为内部类工作?

java - 如何更改 JFrame 上的面板?

java - 在 JFrame 上的 JPanel 内显示 JComponent

Java 泛型 : Object Mapper Converting JSON to Java Object

java - 将一个java项目(我在里面用JLayer 1.0.1来播放mp3)转为可运行的jar文件

java - 用c写一个关键的监听器

java - 为什么我的矩形在 JPanel 中以奇怪的形式显示?

java - 如何检查嵌入式数据库是否存在?

java - 从一个 POJO 列表转换为另一个 POJO