在 Java 中使用 JPanels 的数独板

2023-12-28

我知道已经有几篇关于数独相关问题的帖子,但我不确定其中任何一个是否正是我正在寻找的内容......

我正在尝试使用 JPanels 和 JTextfields 在 Java 中构建一个空的数独板。我还需要使用另一个 JPanel 在右侧创建一个菜单。

棋盘本身是一个 9 x 9 的正方形,分为 9 个 3x3 的正方形。请注意,每个较小的正方形都由比常规正方形间边框更重的边框衬托。每个方块都是一个文本字段。编写程序,使文本字段中没有任何内容。用户可以根据需要在文本字段中输入内容,如果输入的话,就会显示数字。侧面有四个按钮,可让您解决、获得新谜题、获得提示或重置谜题。

任何想法都会很棒。我无法理解如何嵌套 for 循环来创建板。这是我的代码...

    import javax.swing.*;
    import javax.swing.border.Border;
    import java.awt.*;

    public class ArrayTest extends JFrame {

        public ArrayTest() {

    JPanel board = new JPanel(new GridLayout(9, 9));
    add(board);

    JPanel[][] squares = new JPanel[9][9];

    Border border = BorderFactory.createLineBorder(Color.BLACK);


    for (int row = 1; row < 9; row++) {

        for (int col = 1; col < 9; col++) {
            squares[row][col] = new JPanel();
            board.add(squares[row][col]);

        }

    }



    JPanel menu = new JPanel();
    menu.add(new JButton("Reset"));
    menu.add(new JButton("Hint"));
    menu.add(new JButton("Solve"));
    menu.add(new JButton("New Puzzle"));



    add(menu);

}
public static void main(String[] args) {
    // TODO Auto-generated method stub

    /** Create a frame and set its properties*/
    JFrame frame = new ArrayTest();
    frame.setTitle("Sudoku");
    frame.setSize(600, 600);
    frame.setLocationRelativeTo(null); //Center the frame
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);

}

}


我看到一些事情:

  • 我不认为你想要 9x9JPanel就像你现在一样,但是 9x9JTextFields。你可能想要 3x3JPanel这样您就可以使每个部分的边框更粗。直接将它们明确地列出来而不是尝试在循环中进行可能会更容易。

  • 你的循环计数器(和数组索引)应该从 0 开始,而不是 1。按照你现在的方式,循环只会执行 8 次。

  • 您将需要跟踪每行、每列和每个 3x3 子组中的值。行和列就像在二维数组中一样简单。您可以考虑使用另一个数组数组来保存每个 3x3 区域中的值。这使得您可以在需要时更轻松地扫描这些值,并且对于将值放置在较小的 3x3 中可能很有用JPanels,如果你走那条路。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Java 中使用 JPanels 的数独板 的相关文章

随机推荐

  • 通过脚本更改后期处理光晕效果

    我正在尝试通过脚本更改绽放颜色 后处理 在检查器中颜色会发生变化 但在游戏视图中不会发生变化 请提供一些帮助 using System Collections using System Collections Generic using U
  • ZPL 批次上的 GS1 代码条

    我遇到以下问题 在我工作的地方 我正在尝试优化 ID 标签的打印 然而 有些产品在其批次中含有数字和字母 当产品只有数字时 GS1 条形码标签效果很好 但当它同时含有字母和 或符号时 它会删除一些条形码 这是一个例子 货号 410234 批
  • 删除R中列中字符后面的所有内容

    我需要删除列中问号后面的所有内容 我有一个数据集EX my data BABY MOM LANDING mark dina www example com kdvhzkajvkadjf tom becky www example com g
  • 如何解析容器中的 docker 主机名 (/etc/hosts)

    如何解析容器中 Docker 主机的 etc hosts 中定义的名称 在我的 Docker 主机中运行的容器可以解析公共名称 例如 www ibm com 因此 Docker dns 工作正常 我想从容器中解析 Docker 主机的名称
  • Cucumber 在运行单个功能时找不到步骤

    我刚刚将 Cucumber 安装到一个新的 Rails 项目中 第一次从头开始设置 并且在运行所有测试时效果非常好 bundle exec cucumber 但当我运行单个功能文件时找不到我的任何步骤 我该如何开始调试这个 rails 3
  • 防止弹性项目收缩[重复]

    这个问题在这里已经有答案了 Sample wrap outline 1px solid fuchsia display flex left background tan width 100 right background teal wid
  • 使用 TimerTask 移动 JPanel

    因此 我设置了一个如下图所示的 Java GUI 对于画得很糟糕的游戏表示歉意 Java GUI 的布局 所有 JPanel 的大小都相同 图中未很好地显示 我想做的是 当我用进度条做某事时 即读取一些文本文件 JPanels 将循环通过
  • System.Windows ContextMenu ItemClick 事件?

    我正在制作一个 WPF 应用程序 但在我的代码中我需要制作一个 ContextMenu 这看起来非常简单 menu new ContextMenu menu Items Add My menu item 然后我用了它 一切都像魅力一样 但是
  • 将所有外发电子邮件重定向到单个地址进行测试

    在 Ruby on Rails 中 我遇到这样的情况 我希望我的应用程序 在特定的测试环境中 拦截应用程序生成的所有传出电子邮件 并将它们发送到不同的测试地址 可能还修改正文 说 最初发送至 我看到 ActionMailer 有一些钩子来观
  • 如何使 before_action 在除一个之外的所有控制器和操作上运行?

    我有一个 Rails 4 2 x 应用程序 带有身份验证设备 我有几个控制器 我想要设备authenticate user 要在除主控制器索引操作之外的所有控制器和操作上运行的方法 当然 authenticate user 本身会负责设计诸
  • 检查日期等于 C# 月份的第一个日期 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 用户可以以 MM DD YYYY 格式输入任何日期 月份和年份 如 12 12 2013 1 1 2014 7 5 20
  • 如何从android中的浏览器启动活动?

    如何从 Android 浏览器启动我的 Activity 我有一个链接说 http a b com http a b com 当用户在 Android 浏览器中输入该 URL 时 我需要打开活动 我的 Android 清单中有以下意图过滤器
  • 如何在 csproj 构建输出中包含 Nuget 包中的 XML 文档

    我有一个包含 XML 文档文件的 nuget 包 packages MyPackage 1 0 0 lib net472 MyPackage xml 但是 当我构建项目时 我想在输出中包含此 xml 文件 所以当我 dotnet MyPro
  • PHP 函数/方法中返回的最佳实践

    我正在加班重构大量的代码库 从长远来看 我们将在课堂上开发整个系统 但与此同时 我利用这个机会来提高我的 PHP 技能 并改进我们在数百个网站上使用的一些遗留代码 随着时间的推移 我读过关于如何最好地从自定义函数返回数据的相互矛盾的文章 一
  • Android 文件关联不起作用(意图过滤器,扩展名)

    我一直在尝试将我的应用程序与 vrtci 文件扩展名关联起来 但它不起作用 我一直在互联网上查找我做错了什么 但没有任何帮助 这是我的 AndroidManifest xml 中的部分
  • 在mysql中选择字符串的一部分

    我有一个string在这样的一栏中 India Project1 BA Protex 123 Japan ProQ CXR Tbxc 3456 我需要选择Project1 BA or ProQ CXR像这样在mySQL 有两个函数用于提取字
  • 如何重置或取消设置以编程方式设置的视图高度或宽度

    我正在努力解决这个问题 并且由于其通用关键字导致结果产生不相关的问题 因此我无法找到该问题的直接答案 如果我以编程方式设置视图的高度或宽度 例如 Button findViewById R id myButtonId getLayoutPa
  • PayPal Express Checkout 不支持通过信用卡/借记卡选项付款

    我有一个使用 PayPal Express Checkout 作为付款方式的网站 它已经工作了 2 年 没有出现任何问题 但昨天我注意到付款选项发生了更改 然后才向用户提供了 2 个付款选项 使用 PayPal 帐户登录并付款 没有 Pay
  • 如何保存半完成的表格

    我正在开发一个项目 我们希望让用户能够保存半完成的表单 以便他们稍后可以回来完成它 我正在努力弄清楚我到底想如何做到这一点 我是否将它们与已完成的申请保存在同一个池中 只是具有特殊状态 我真的不想牺牲已完成的应用程序的完整性 而在我不希望字
  • 在 Java 中使用 JPanels 的数独板

    我知道已经有几篇关于数独相关问题的帖子 但我不确定其中任何一个是否正是我正在寻找的内容 我正在尝试使用 JPanels 和 JTextfields 在 Java 中构建一个空的数独板 我还需要使用另一个 JPanel 在右侧创建一个菜单 棋