我正在学习有关的JPanel和网格布局,这个代码片段将生成一个简单的JPanel有6个按钮.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);
}
}
我很奇怪,为什么我的代码,难道不工作,如果我注释掉jf.pack()
其他信息在[的javadoc]看看(http://docs.oracle.com/javase /8/docs/api/java/awt/Window.html#pack) – robertoia
这个问题似乎是无关紧要的,因为它是关于通过a)查阅文档b)尝试一个简单的代码实验很容易解决的问题。 –
'this.setPreferredSize(new Dimension(500,500));'请参阅[我应该避免使用Java Swing中的set(Preferred | Maximum | Minimum)Size方法吗?](http://stackoverflow.com/q/7229226/ 418556)(是) –