You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java Swing窗体中结合多布局实现四子棋重置按钮?

四子棋游戏添加Reset按钮的布局解决方案

要在现有棋盘下方添加Reset按钮,你可以通过嵌套布局实现:用BorderLayout作为JFrame的主布局,将棋盘区域放在中心,Reset按钮固定在底部(或顶部)。具体操作步骤如下:

  1. 新建一个JPanel作为棋盘容器,把所有棋格按钮添加到这个面板中,并给它设置GridLayout(6,7)。
  2. 将JFrame的主布局改为BorderLayout,把棋盘面板放到BorderLayout.CENTER区域,Reset按钮放到BorderLayout.SOUTH区域。

修改后的完整代码如下:

ApplicationRunner类

public class ApplicationRunner {
    public static void main(String[] args) {
        new ConnectFour();
    }
}

ConnectFour类

import javax.swing.*;
import java.awt.*;
import java.util.HashMap;

public class ConnectFour extends JFrame {
    private String buttonLbl = "X";
    HashMap<String, JButton> buttons;

    public ConnectFour() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(600, 650); // 适当调高窗口高度,避免底部按钮被遮挡
        setTitle("Connect Four");
        setLocationRelativeTo(null);

        // 创建Reset按钮
        JButton resetButton = new JButton("Reset");
        resetButton.setName("reset button");

        // 创建棋盘面板并设置布局
        JPanel boardPanel = new JPanel();
        GridLayout gridLayout = new GridLayout(6, 7, 0, 0);
        boardPanel.setLayout(gridLayout);

        // 批量添加棋格按钮到棋盘面板
        for (int i = 6; i > 0; i--) {
            for (char c = 'A'; c <= 'G'; c++) {
                String cell = "" + c + i;
                JButton cellButton = new JButton(" ");
                cellButton.setBackground(Color.LIGHT_GRAY);
                cellButton.setName("Button" + cell);
                boardPanel.add(cellButton);
            }
        }

        // 组合布局:棋盘占中心,Reset按钮在底部
        setLayout(new BorderLayout());
        add(boardPanel, BorderLayout.CENTER);
        add(resetButton, BorderLayout.SOUTH);

        setVisible(true);
    }
}

调整后,Reset按钮会固定在窗口底部,棋盘区域自动占满剩余空间,完美实现两种布局的组合。

内容的提问来源于stack exchange,提问作者Michal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 11:15:36