Подтвердить что ты не робот

Что делает .pack()?

Я узнаю о JPanel и GridLayout, этот фрагмент кода создаст простой JPanel с 6 кнопками

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()

4b9b3361

Ответ 1

Метод пакета определяет размер кадра так, чтобы все его содержимое находилось на уровне или превышало их предпочтительные размеры. Альтернативой пакету является установка размера фрейма явным путем вызова setSize или setBounds (который также устанавливает местоположение фрейма). В общем случае использование пакета предпочтительнее вызова setSize, так как пакет оставляет менеджером раскладки кадров, отвечающим за размер фрейма, а менеджеры макетов умеют настраивать зависимости платформы и другие факторы, влияющие на размер компонента.

Из учебник по Java

Вы также должны обращаться к Javadocs в любое время, когда вам нужна дополнительная информация о любом Java API