Java Swing How to - Set frame size when using GridLayout and layout alphabet letters








Question

We would like to know how to set frame size when using GridLayout and layout alphabet letters.

Answer

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.image.BufferedImage;
/*from  w ww. j  a va  2 s.  c  om*/
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Main {
  public static void main(String[] args) {
    JPanel gui = new JPanel(new BorderLayout(2, 2));
    BufferedImage bi = new BufferedImage(600, 200, BufferedImage.TYPE_INT_RGB);
    gui.add(new JLabel(new ImageIcon(bi)));

    JFrame myframe = new JFrame();
    JPanel myPanel = new JPanel();
    gui.add(myPanel, BorderLayout.PAGE_END);
    myPanel.setLayout(new GridLayout(2, 0, 0, 0));

    int x = 0;
    int y = 5;

    for (char alphabet = 'A'; alphabet <= 'Z'; alphabet++) {
      myPanel.add(new JButton(alphabet + ""));
      x++;
      if (x > 15) {
        y = 6;
        x = 0;
      }
    }
    myframe.add(gui);
    myframe.pack();
    myframe.setVisible(true);

    myframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}