【问题标题】:How should I link two items with MouseMovementListeners?我应该如何将两个项目与 MouseMovementListeners 链接?
【发布时间】:2012-09-21 06:30:24
【问题描述】:

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

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

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

【问题讨论】:

    标签: java swing awt mouseevent mousemove


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-02
        • 1970-01-01
        • 2012-03-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-04
        • 1970-01-01
        相关资源
        最近更新 更多