我应该如何使用MouseMovementListeners链接两个项目?

时间:2012-09-29 19:33:25

标签: java swing awt mouseevent mousemove

我正在开发一个程序,它将显示同一组项目的两个“视图”。所以我需要设置一些东西,这样当自上而下的视图发生变化时,侧视图会更新(反之亦然)。

以下是相关代码的简要概述,以便您了解到目前为止我的结构:

public class DraggableComponent extends JComponent
{
    //Contains code for MouseMovementListener that makes the item draggable
}

public class ItemGraphic extends DraggableComponent
{
    //Code to render the graphic
}

public class Item
{
    private ItemGraphic topGraphic;
    private ItemGraphic sideGraphic;
}

我能够让每个图形在我的GUI中显示得很好。我也可以独立拖动每个图形。我错过了“链接”。 我一直在考虑的一些想法:

  • 为整个GUI提供一个监听器。循环遍历每个项目,如果 光标位于任一图形的边界内,移动另一个 图形。我很担心这种方法的效率。
  • 多个“配对”听众(不太清楚这会是怎样的 工作,但想法是每个图形都有一个监听另一个配对的图形)

2 个答案:

答案 0 :(得分:2)

您需要拥有一个“视图”共享的“模型”,以及更新视图的模型上的侦听器。这样,如果更改视图,控件将更改将更新两个视图的模型。这只不过是MVC(模型 - 视图 - 控制)程序设计的另一个迭代。

答案 1 :(得分:2)

我建议您需要某种中间模型,这两种组件可以共享和监控。

这个想法是当您更新/更改视图时,它会使用所需的值更新模型。所有其他感兴趣的各方都会通过监听器界面通知更改并相应地更新它们。

我们使用类似的技术来链接两个滚动窗格