2013-05-05 33 views
0

我有一个30x30的JPanel GridLayout。因此30x30帧中的每个Cell都是带有Image的JPanel。在地图上又名瓷砖。在GridLayout中移动组件

我需要在keyPress上围绕此地图移动我的角色(红色JPanel)。

我该怎么做?我没有看到在GridLayout中更换组件的方法:S

另外,是否有比替换组件更好的方法,因为如果我替换它,我必须跟踪旧组件,以便在角色移动到下一个图块,它将替换该角色以前的旧组件。

+0

您可以使用框架玻璃窗格或“JXLayer”之类的东西来覆盖网格窗格顶部的角色。可以更好地让你在网格上的面板自定义绘制背景,然后“添加”字符... – MadProgrammer 2013-05-06 00:23:00

回答

1

GridLayout不是您的问题的好方案。原因:GridLayout将始终按照您编写“container.add(component)”语句的顺序对组件进行排序。除了在之前的所有地方插入虚拟组件之外,您不能将组件放置在特定位置。

您可能想尝试GridBagLayout ..在GridBagLayout中,您要做的关键事件就是更新动态面板的位置,并将显示在该位置的固定面板的顶部。无需记住旧部件

+0

尝试编写一些代码,让我们知道你是否面临任何问题 你可以阅读GridBagLayout在:http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html – Mady 2013-05-05 23:56:57

+0

我使用GridBagLayout后面的这个例子:http://stackoverflow.com/questions/3695402/gridbaglayout-equally-分布式单元 我将如何覆盖我的动态面板? – Brandon 2013-05-06 00:31:07

+0

我几乎完成了一个示例程序,但必须赶上..会写几个小时的代码 – Mady 2013-05-06 01:18:23

1

我该怎么做?我没有看到在GridLayout中更换组件的方法

为什么您需要更换组件?只需更换图像。

您需要跟踪最后一个组件并保存其图像。然后,当你移动到一个新的正方形,您:

一)恢复旧的图像 B)保存新的图像 c)您的红色图像添加到位置。