我正在学习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()
jf.pack()
打包方法调整框架的大小,以使其所有内容均等于或大于其首选大小。打包的另一种方法是通过调用setSize或setBounds(也设置帧位置)显式建立帧大小。通常,使用pack优于调用setSize,因为pack由框架布局管理器负责框架大小,并且布局管理器擅长调整平台依赖性和其他影响组件大小的因素。