java - 创建一个 JButton 数组

标签 java arrays swing jbutton

基本上我正在尝试制作一个 Lightout 游戏!我想制作一个 JButton 数组 所以我可以跟踪每个按钮的索引(原因是每个按钮的状态取决于其他按钮的状态)

到目前为止我有:

JPanel panel = new JPanel();
    setTitle("Memory");
    setContentPane(panel);
    setPreferredSize(new Dimension(300, 300));
    panel.setLayout(new GridLayout(5,5));


    JButton[][] buttons = new JButton[5][5] ;
    for (int i = 0; i < 5; i++)
        for (int j = 0; j < 5; j++) {
          buttons[i][j] = new JButton();

    setDefaultCloseOperation(EXIT_ON_CLOSE);
    pack();
    setVisible(true);
        }

但这并没有像我期望的那样工作。当我运行它时,我得到了一个很大的空白 JFrame。任何帮助将不胜感激

最佳答案

附加的代码应该修复它。您正在创建按钮,但没有将其添加到 JFrame。我已经编辑了代码以添加访问 JButton 的 ID 并在您单击它时显示它的 Action 监听器。

public class CodeSample extends JFrame {

private static final long serialVersionUID = -8134989438964195251L;

public CodeSample() {
    JPanel panel = new JPanel();
    setTitle("Memory");
    setContentPane(panel);
    setPreferredSize(new Dimension(300, 300));
    panel.setLayout(new GridLayout(5, 5));
    ButtonListener listener = new ButtonListener();

    JButton[][] buttons = new JButton[5][5];
    for (int i = 0; i < 5; i++) {
        for (int j = 0; j < 5; j++) {
            buttons[i][j] = new JButton();
            buttons[i][j].setBackground(Color.black);
            buttons[i][j].putClientProperty("id",
                    String.valueOf(i).concat(String.valueOf(j)));
            buttons[i][j].addActionListener(listener);
            panel.add(buttons[i][j]);
        }
    }

    setDefaultCloseOperation(EXIT_ON_CLOSE);
    pack();
    setVisible(true);
}

public static class ButtonListener implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println(((JButton) e.getSource())
                .getClientProperty("id"));
    }

}

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

关于java - 创建一个 JButton 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36466438/

相关文章:

java - 如果我在 Java 中使用 HashMap<String, ArrayList<String>>

java - 将数据从 java gui 输入到现有的 Excel 电子表格

javascript - 如何对嵌套数组中的所有元素求和?

java - EDT 中是否调用了 setBounds() ?

java - JFileChooser 不遵循外观

java - 如何向添加到 JFrame 的 JPanel 添加边框?

java - Spring Boot 实体上的 set 函数不持久

java - 如何根据焦点控件知道当前 "focused"是哪个顶层容器?

ios - 避免类对象数组中的重复 Swift 3

java - 无法计算折扣