java - 使用网格布局添加按钮

标签 java swing jpanel jbutton grid-layout

我正在尝试创建一个由 9x9 JButtons 制作的简单井字棋盘。 我使用了一个二维数组和一个网格布局,但结果什么也没有,一个没有任何按钮的框架。 我做错了什么?

import java.awt.GridLayout;
import javax.swing.*;


public class Main extends JFrame
{
    private JPanel panel;
    private JButton[][]buttons;
    private final int SIZE = 9;
    private GridLayout experimentLayout;
    public Main()
    {
        super("Tic Tac Toe");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(500,500);
        setResizable(false);
        setLocationRelativeTo(null);

        experimentLayout =  new GridLayout(SIZE,SIZE);

        panel = new JPanel();
        panel.setLayout(experimentLayout);


        buttons = new JButton[SIZE][SIZE];
        addButtons();


        add(panel);
        setVisible(true);
    }
    public void addButtons()
    {
        for(int k=0;k<SIZE;k++)
            for(int j=0;j<SIZE;j++)
            {
                buttons[k][j] = new JButton(k+1+", "+(j+1));
                experimentLayout.addLayoutComponent("testName", buttons[k][j]);
            }

    }


    public static void main(String[] args) 
    {
        new Main();

    }

}

addButton 方法将按钮添加到数组中,然后直接添加到面板中。

最佳答案

您需要将按钮添加到您的JPanel:

public void addButtons(JPanel panel) {
   for (int k = 0; k < SIZE; k++) {
      for (int j = 0; j < SIZE; j++) {
         buttons[k][j] = new JButton(k + 1 + ", " + (j + 1));
         panel.add(buttons[k][j]);
      }
   }
}

关于java - 使用网格布局添加按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13787873/

相关文章:

java - 根据对象的属性对 TreeMap<Integer, Object> 进行排序

java - 如何在 Swing 中获取 JFrame

c# - winforms 面板与 java swing 面板

创建 jar 后出现 java.lang.ClassNotFoundException : com. microsoft.sqlserver.jdbc.SQLServerDriver

java - if 语句和过多的打印

java - EasyMock - 期望静态方法调用

java - 在 JPanel 上居中 JButton

java - Subclipse 每当使用命令行 svn 时都会删除它的钥匙串(keychain)访问

java - 在 Windows 7 中创建新的 JFileChooser 作为本地系统帐户时 Win32ShellFolder2.access 中的 NPE

java - Java Swing 组件的基本问题?