我正在为我的基于瓷砖的 java 游戏使用 java swing 制作地图编辑器。Swing 应用程序有两个主要组件,“上部”组件是游戏地图预览,“下部”组件是地图的可修改属性,如高度和宽度。
目前,用户在 jtextfield 中输入地图宽度,然后我使用更改侦听器将该值设置为 GameMap 对象。GameMap 对象在更改时会向 GameMapListeners 触发通知事件,它拥有的主要侦听器是 Swing 应用程序中地图的预览显示。
这使用户可以更改地图宽度并立即在预览窗格中查看结果。
现在我想走另一条路。我希望用户能够在预览窗格中单击并拖动地图的边缘,但随后需要将结果发送到属性面板,以便显示更新的宽度值。
这就是问题所在,如果我更新 jtextfield,它将触发一个更改事件,该事件将更新 GameMap 并更新预览显示,然后会触发一个再次更改 jtextfield 的事件(依此类推,直到由于堆栈溢出导致程序崩溃)
有没有我可以使用的设计模式,或者有一些常见的方法来解决这个问题?