1

我正在开发一个程序,该程序将显示同一组项目的两个“视图”。所以我需要设置一些东西,以便在更改俯视图时,更新侧视图(反之亦然)。

以下是相关代码的简要概述,因此您可以了解我目前的结构:

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 设置一个侦听器。循环遍历每个项目,如果光标在任一图形的范围内,则移动另一个图形。我担心这种方法的效率。
  • 多个“配对”侦听器(不太确定这将如何工作,但想法是每个图形都有另一个配对图形的侦听器)
4

2 回答 2

2

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

于 2012-09-29T19:44:47.730 回答
2

我建议您需要某种两个组件可以共享和监视的中间模型。

这个想法是当您更新/更改视图时,它会使用所需的值更新模型。所有其他相关方都通过侦听器接口通知更改并相应地更新他们自己。

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

于 2012-09-29T19:46:07.623 回答