wake-up-neo.net

Was macht .pack ()?

Ich lerne gerade über JPanel und GridLayout, dieser Codeausschnitt wird ein einfaches JPanel mit 6 Knöpfen erzeugen

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

    }

}

Ich frage mich, warum mein Code nicht funktioniert, wenn ich jf.pack() auskommentiere.

34
Computernerd

Bei der Packmethode wird die Größe des Rahmens so angepasst, dass der gesamte Inhalt der gewünschten Größe entspricht oder darüber liegt. Eine Alternative zum Packen besteht darin, eine Frame-Größe explizit durch Aufrufen von setSize oder setBounds festzulegen (wodurch auch die Position des Frames festgelegt wird). Im Allgemeinen ist die Verwendung von pack dem Aufruf von setSize vorzuziehen, da pack den Frame-Layout-Manager für die Frame-Größe verantwortlich macht und Layout-Manager sich gut an Plattformabhängigkeiten und andere Faktoren anpassen können, die sich auf die Komponentengröße auswirken.

Von Java-Tutorial

Sie sollten auch auf Javadocs verweisen, wenn Sie zusätzliche Informationen zu einer Java API benötigen

50
sidgate