以下代码可以满足您的要求。只需确保分配足够的空间,以使按钮上的文本可见
Jframe frame = new Jframe("test");frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);JPanel panel = new JPanel(new GridLayout(4,4,4,4));for(int i=0 ; i<16 ; i++){ JButton btn = new JButton(String.valueOf(i)); btn.setPreferredSize(new Dimension(40, 40)); panel.add(btn);}frame.setContentPane(panel);frame.pack();frame.setVisible(true);X和Y(GridLayout构造函数的两个第一个参数)分别指定了网格中的行数和列数。如果您希望该值不受限制,则可以将其中之一保留为0。
编辑
我已经修改了提供的代码,并且我相信它现在符合要求:
Jframe frame = new Jframe("Colored Trails");frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);JPanel mainPanel = new JPanel();mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));JPanel firstPanel = new JPanel();firstPanel.setLayout(new GridLayout(4, 4));firstPanel.setMaximumSize(new Dimension(400, 400));JButton btn;for (int i=1; i<=4; i++) { for (int j=1; j<=4; j++) { btn = new JButton(); btn.setPreferredSize(new Dimension(100, 100)); firstPanel.add(btn); }}JPanel secondPanel = new JPanel();secondPanel.setLayout(new GridLayout(5, 13));secondPanel.setMaximumSize(new Dimension(520, 200));for (int i=1; i<=5; i++) { for (int j=1; j<=13; j++) { btn = new JButton(); btn.setPreferredSize(new Dimension(40, 40)); secondPanel.add(btn); }}mainPanel.add(firstPanel);mainPanel.add(secondPanel);frame.setContentPane(mainPanel);frame.setSize(520,600);frame.setMinimumSize(new Dimension(520,600));frame.setVisible(true);基本上,我现在设置面板的首选大小和框架的最小大小。



