2012-09-29 21 views
1

我正在研究一个程序,该程序将显示同一组项目的两个“视图”。所以我需要设置一些东西,这样当自上而下的视图更改时,侧视图会更新(反之亦然)。我应该如何使用MouseMovementListeners链接两个项目?

下面是相关的代码的简要概述,所以你可以让我的结构的想法至今:

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

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

+0

+1打我:P ... – MadProgrammer

+0

@MadP:但远说。 1+ –

2

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

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

我们使用了类似的技术,以连接两个滚动窗格

相关问题