刚开始学习swing,有个问题:
这是网格布局的,它的大概作用我也明白,但有一个问题不清楚,运行这个程序得到一个容器,里面有2X2的表格。
这个容器出现在我电脑屏幕的左上角,我想知道是什么决定这个容器最一开始大小的?
我的理解是应该先决定容器的大小,然后均分这个大小,来放置这些组件。但看来不是这样的,谁能指教一下这到底是怎么回事?import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;import javax.swing.JButton;
import javax.swing.JFrame;public class GridSizeTest extends JFrame {  public static void main(String[] args) {
    GridSizeTest gst = new GridSizeTest();
    gst.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    gst.pack();
    gst.setVisible(true);
  }  public GridSizeTest() {
    Container pane = getContentPane();
    pane.setLayout(new GridLayout(2, 2));
    JButton button = new JButton("First");
    pane.add(button);
    button = new JButton("Second with a very long name");
    pane.add(button);
    button = new JButton("Hi");
    button.setFont(new Font("Courier", Font.PLAIN, 36));
    pane.add(button);
    button = new JButton("There");
    pane.add(button);
  }}

解决方案 »

  1.   

    记得加入控件的最后 调用 pack() 方法,用来初始化大小。
      

  2.   

    程序里有  gst.pack();pack方法解释
    调整此窗口的大小,以适合其子组件的首选大小和布局。如果该窗口和/或其所有者还不可显示,则在计算首选大小之前都将变得可显示。在计算首选大小之后,将会验证该窗口。
      

  3.   

    查看一下gst.pack();的jdk源码你就知道了