我即将创建一个 java 填字游戏应用程序,但我不确定要使用哪些包来绘制填字游戏网格。我知道您可以使用 Graphics2D 等手动绘制网格,但我不确定这是否是最简单的方法,因为我需要网格方块中的文本字段。
任何人都对创建填字游戏有任何建议。
我即将创建一个 java 填字游戏应用程序,但我不确定要使用哪些包来绘制填字游戏网格。我知道您可以使用 Graphics2D 等手动绘制网格,但我不确定这是否是最简单的方法,因为我需要网格方块中的文本字段。
任何人都对创建填字游戏有任何建议。
实际上,我认为您不需要网格方块中的文本字段,而只是为每个网格单元写下每个字母..
为了允许编辑,您只需在您使用的组件上捕捉键盘敲击,并根据用户所写的内容设置填字游戏单元格。
这样做会很容易,因为您可以使用存储整个网格的后二维数组,然后当用户选择一个定义时,只要从定义的第一个单元格开始键入键,您就开始填充单个字母。 . 你的绘图程序只需要能够在单元格内绘制网格和中心字母,仅此而已..
AJTable
可以工作,但它认为它对于你的问题来说太大了,因为你最终会与很多你根本不需要的东西交互..
编辑(评论):
我做了类似的事情:你可以有一个细胞类
class Cell
{
boolean isBlank;
char value;
}
使用一组单元格,您可以获得网格:
Cell[][] gamefield = new Cell[15][15];
然后在里面paint()
你可以很容易地迭代:
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);
}
}
也许对单元格使用 JTable 和自定义渲染器。这至少应该是一个简单的解决方案。当然,习惯 JTable 需要一点时间,但最终还是很简单的。
你有考虑过JavaFX吗?JavaFX 将允许您基于使用 Adobe Photoshop/Inkscape 等编辑的矢量图/图形创建“场景图”。
如果不是,最简单的方法是扩展 JTextField ,使其仅保留 1 个字符并且为黑色/或任何颜色以指示不可编辑和禁用。此外,添加自定义边框以指示谜题编号。将所有内容放入 GridLayout。