Java GridLayout中的移动组件

Java GridLayout中的移动组件,java,swing,awt,layout-manager,grid-layout,Java,Swing,Awt,Layout Manager,Grid Layout,我有一个30x30的JPanel网格布局。因此30x30帧中的每个单元格都是一个带有图像的JPanel。也就是地图上的瓷砖 我需要用键盘在地图上移动我的角色(红色JPanel) 我该怎么做?我看不到替换GridLayout中组件的方法:S 还有,有没有比替换组件更好的方法,因为如果我替换它,我必须跟踪旧组件,这样当角色移动到下一个磁贴时,它会替换角色原来所在的旧组件。GridLayout不是解决问题的好方法。原因:GridLayout将始终按照您编写“container.add(componen

我有一个30x30的JPanel网格布局。因此30x30帧中的每个单元格都是一个带有图像的JPanel。也就是地图上的瓷砖

我需要用键盘在地图上移动我的角色(红色JPanel)

我该怎么做?我看不到替换GridLayout中组件的方法:S


还有,有没有比替换组件更好的方法,因为如果我替换它,我必须跟踪旧组件,这样当角色移动到下一个磁贴时,它会替换角色原来所在的旧组件。

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

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

我该怎么做?我看不到在GridLayout中替换组件的方法

为什么需要更换部件?只需替换图像

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

a) 恢复旧映像 b) 保存新图像
c) 将您的红色图像添加到该位置。

尝试编写一些代码,并让我们知道您是否遇到任何问题。您可以在以下位置阅读关于GridBagLayout的内容:我在下面的示例中使用了GridBagLayout:如何在其上覆盖我的动态面板?我几乎完成了一个示例程序,但不得不赶紧。。我会在几个小时内给你写代码:)我解决了。我只需要知道我的角色何时到达我的盒子边缘。应该很简单。付出了巨大的努力,报酬丰厚:)你可以使用框架玻璃窗格或
JXLayer
将你的角色覆盖在网格窗格的顶部。最好允许网格上的面板自定义绘制背景,然后将角色“添加”到背景中。。。