首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Crossword应用程序-使用什么包?

Java Crossword应用程序-使用什么包?
EN

Stack Overflow用户
提问于 2010-04-10 23:48:33
回答 3查看 2K关注 0票数 1

我将要创建一个java纵横填字游戏应用程序,但是我不确定要使用什么包来绘制纵横填字游戏网格。我知道你可以用Graphics2D等手动绘制网格,但我不确定这是否是最简单的方法,因为我需要在网格方块中使用文本字段。

任何人对创建纵横填字游戏网格有任何建议。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-04-10 23:56:35

实际上,我不认为您需要在网格方块中使用文本字段,而只是写下每个网格单元格中的每个字母。

要允许编辑,您只需在您使用的组件上捕捉键盘敲击,并根据用户编写的内容设置纵横字谜单元格。

这样做非常容易,因为您可以使用存储整个网格的反向二维数组,然后当用户选择一个定义时,只要从定义的第一个单元格开始键入键,就可以开始填充单个字母。您的绘图例程只需要能够在单元格中绘制网格和居中字母,仅此而已。

JTable可以工作,但它认为它对于你的问题来说太大了,因为你最终会接触到很多你根本不需要的东西。

编辑(用于注释)

我做了类似的事情:你可以有一个cell类

代码语言:javascript
复制
class Cell
{
   boolean isBlank;
   char value;
}

通过一个单元格数组,您可以获得网格:

代码语言:javascript
复制
Cell[][] gamefield = new Cell[15][15];

然后,在paint()中,您可以轻松地迭代:

代码语言:javascript
复制
for (int i = 0; i < Scheme.rows; ++i)
{
  for (int j = 0; j < Scheme.cols; ++j)
  {
    g2.drawRect(i*32, j*32, 32, 32);

    if (Scheme.scheme[i][j].isBlank)
      g2.fillRect(i*32 + 3, j*32 + 3, 32 - 5, 32 - 5);
  }
}

仅仅因为我仍然有一个截图结果,就像这样

票数 3
EN

Stack Overflow用户

发布于 2010-04-10 23:50:45

可以为单元格使用JTable和自定义渲染器。这至少应该是一个简单的解决方案。当然,习惯JTable需要一点时间,但最终还是很简单的。

票数 0
EN

Stack Overflow用户

发布于 2010-04-11 00:25:34

你有没有考虑过JavaFX?JavaFX将允许你基于矢量/图形创建“场景图”,这些矢量/图形是使用Adobe Photoshop/Inkscape等编辑的。

如果不是,最简单方法是扩展JTextField,使其只包含1个字符,且将是黑色/或表示不可编辑和禁用的任何颜色。此外,添加自定义边框以指示难题问题编号。把所有东西都放到一个GridLayout里。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2613921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档