2014-04-10 42 views
28

uczę o JPanel i GridLayout, ten fragment kodu będzie produkować proste JPanel z 6 przyciskówCo robi funkcja .pack()?

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

    } 

} 

Zastanawiam się, dlaczego mój kod nie działała jeśli mogę wypowiedzieć się jf.pack()

+7

Spójrz na [javadoc] (http://docs.oracle.com/javase /8/docs/api/java/awt/Window.html#pack) – robertoia

+7

To pytanie wydaje się być nie na temat, ponieważ dotyczy spraw łatwo rozwiązywanych przez a) zapoznanie się z dokumentacją b) wypróbowanie prostego eksperymentu kodu. –

+0

'this.setPreferredSize (new Dimension (500.500)); Patrz [Czy należy unikać używania metod Set (Preferred | Maximum | Minimum) Size w Java Swing?] (Http://stackoverflow.com/q/7229226/ 418556) (tak.) –

Odpowiedz

35

metody paczka rozmiary ramki tak, aby cała jej zawartość była na lub powyżej ich preferowanych rozmiarów. Alternatywą dla pakietu jest jawne ustalenie rozmiaru klatki poprzez wywołanie metody setSize lub setBounds (która również ustawia położenie klatki). Ogólnie rzecz biorąc, używanie pakietu jest lepsze niż wywoływanie metody setSize, ponieważ pakiet pozostawia menedżera układu ramek odpowiedzialnego za rozmiar ramki, a menedżer układu dobrze dostosowuje się do zależności między platformami i innych czynników wpływających na rozmiar komponentu.

Od Java tutorial

Należy również odnieść się do Javadocs każdej chwili potrzebujesz dodatkowych informacji na temat wszelkich Java API

+3

Dlaczego nazywają to "paczką"? – Ninjaxor

+2

Ponieważ pakuje komponenty blisko siebie. –

Powiązane problemy