.pack() 做什么?

问题描述 投票:0回答:3

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

java swing jpanel
3个回答
71
投票

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

来自Java教程

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


0
投票

pack()
方法被定义为 Java 中的 Window 类,它调整框架的大小,使其所有内容都达到或超过其首选大小。


0
投票

如果你不设置框架大小,将会有一个 0 像素宽度和 0 像素高度的窗口/框架,所以你甚至看不到它。

  • 包()
    It will take care of size of Your window, and make it big enaugh so all items can fit.

备选方案:

  • setSize( width,height ) - 让您可以手动设置窗口大小
  • setBounds( screenX,screenY,width,height ) - 与 setSize() 相同;但您也可以调整窗口在屏幕上的位置。
© www.soinside.com 2019 - 2024. All rights reserved.