我将要创建一个java纵横填字游戏应用程序,但是我不确定要使用什么包来绘制纵横填字游戏网格。我知道你可以用Graphics2D等手动绘制网格,但我不确定这是否是最简单的方法,因为我需要在网格方块中使用文本字段。
任何人对创建纵横填字游戏网格有任何建议。
发布于 2010-04-10 23:56:35
实际上,我不认为您需要在网格方块中使用文本字段,而只是写下每个网格单元格中的每个字母。
要允许编辑,您只需在您使用的组件上捕捉键盘敲击,并根据用户编写的内容设置纵横字谜单元格。
这样做非常容易,因为您可以使用存储整个网格的反向二维数组,然后当用户选择一个定义时,只要从定义的第一个单元格开始键入键,就可以开始填充单个字母。您的绘图例程只需要能够在单元格中绘制网格和居中字母,仅此而已。
JTable可以工作,但它认为它对于你的问题来说太大了,因为你最终会接触到很多你根本不需要的东西。
编辑(用于注释)
我做了类似的事情:你可以有一个cell类
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);
}
}仅仅因为我仍然有一个截图结果,就像这样

发布于 2010-04-10 23:50:45
可以为单元格使用JTable和自定义渲染器。这至少应该是一个简单的解决方案。当然,习惯JTable需要一点时间,但最终还是很简单的。
发布于 2010-04-11 00:25:34
你有没有考虑过JavaFX?JavaFX将允许你基于矢量/图形创建“场景图”,这些矢量/图形是使用Adobe Photoshop/Inkscape等编辑的。
如果不是,最简单方法是扩展JTextField,使其只包含1个字符,且将是黑色/或表示不可编辑和禁用的任何颜色。此外,添加自定义边框以指示难题问题编号。把所有东西都放到一个GridLayout里。
https://stackoverflow.com/questions/2613921
复制相似问题