我是Java中的Swing的新手,我正在努力创建一个可视网格。关于如何执行以下操作,我有一些简单的问题。以下是网格的一些特征:
对于网格的每个方格,我应该有一个等价索引(i,j),使用它我可以识别正方形并放置文本。 编辑 - (i,j)是行/列值 - 网格中正方形的索引。
应绘制正方形的对角线,并且正方形的四个分区中的每一个都应具有不同的颜色。
有关如何操作的任何建议。
答案 0 :(得分:3)
鉴于row
和column
,您需要知道每行columns
的数量。使用此信息,您只需执行(row * columns) + column
即可返回正方形的索引。
例如,每行8
列,请求
row = 0
,column = 4
,将返回4
row = 1
,column = 4
,将返回12
row = 0
,column = 0
,将返回0
渲染方块的部分更复杂,可以通过至少两种方式实现。您可以使用Polygon
为每个部分生成一个三角形或Shape
,只需使用Graphics2D#fill
填充它。
这将归结为你如何物理渲染每个方格......
请查看2D Graphics以获取更多详细信息,并this查看两者的示例。
Shape
更容易旋转和定位,只需要您拥有一个实例(或根据您的需要为每个方块设置一个实例),您需要至少4个{ {1}}或做一些有趣的轮换......
更新了简单示例
全部用旋转三角形完成......
Polygon
答案 1 :(得分:2)
是的,请参阅Making a robust, resizable Chess GUI了解使用GridLayout
包含JButton
个对象的GUI。按钮保持在8x8阵列(棋盘)中,同时以9行×9列网格布局显示以容纳行(8-1)和&列的(A-H)标识符。
按钮将接受可能代表“4色对角线”和文字的图像。在国际象棋棋盘中我只使用图像(棋子)。
4个彩色区域(除了颜色)之间的实际差异是什么。例如。根据用户点击的对角线区域,应该有不同的功能吗?
正方形中的4个彩色区域中的每一个都具有基于某种算法的表格中的值。颜色取决于价值。目前,它仅用作指标。但是用户需要在网格中选择一个初始方块,我在其中放置一个初始标记。
和文字。它应该在“4色对角线”的顶部,旁边还有它下面......?
我还计划在每个区域放置一个文本来表明该值。因此,在广场的四个分区中的每一个中都有一个文本字段。
文字字段或标签?标签可以显示文本,但文本字段可以复制文本或更改文本。
我需要一个文本字段,因为我需要在算法过程中更改文本。
通过'我'DYM程序,还是用户?该程序可以更改标签或文本字段中的文本,但文本字段是用户可编辑的。
我的意思是程序
确定 - 在图像上绘制设计和文字。将图像用作按钮图标。用户可以通过单击按钮选择初始方块。如果文本更改,则生成新图像并将其设置为按钮。
那么你的意思是我必须用4种颜色创建一个图像吗?这不会很难。我想改变程序本身的颜色。我的算法会生成值,在算法的某些点上,我希望看到可视化。
如果您在运行时生成图像,则不会。
如何在运行时生成图像?
查看Example images for code and mark-up Q&As第一组图标 ..
的答案...
..以及 Sprite表 ..
..是在Java代码中的运行时生成的。每组图像都链接到包含生成它们的代码的问题。
答案 2 :(得分:0)
我相信你在摇摆中描述了SetGridLayout功能。如果您需要有关如何设置此类窗口的教程,可以在此处找到它:
http://docs.oracle.com/javase/tutorial/uiswing/layout/grid.html
第二次看完你的问题后...我觉得你打算画一个网格...... 我会查看Draw.java库
答案 3 :(得分:0)
也许你可以尝试这样做添加一个jTable对象,这个对象包含的方法可以将值分别放在每个值i和j中:
jTable1.setValueAt(Value, i, j);
这将允许您更改每个单元格中的值。