【问题标题】:Swing application using threads based on MVC使用基于 MVC 的线程的 Swing 应用程序
【发布时间】:2014-07-11 22:21:34
【问题描述】:

我的应用程序有一些在主类中启动的线程。

我想在这个 Swing 应用程序中使用 MVC。

Main 类等待来自某个客户端的套接字连接,然后当客户端连接时,我从我创建的 Telnet 类创建一个 telnet 对象。并且这个类拥有线程将使用的所有共享资源。

在此之后我启动我的线程,将 telnet 对象作为参数传递,因此它将用于同步线程。

我的应用程序中有五个线程:客户端、管理、服务器、节点和代理。

每个都有特定的功能。

这就是我的场景。

我想在我的应用程序中使用 MVC 来更恰当地组织这些线程,并使应用程序更易于维护。

我已经在 Swing 应用程序中使用过 MVC,但没有线程。

【问题讨论】:

  • 您的问题对我来说似乎有点宽泛,您可能希望更加充实这个问题,以便为我们提供更多的肉。您可以提供的相关细节越多,您可以向我们展示的示例代码越好,我们就能越好地为您提供帮助。
  • 例如,“调用我的线程”是什么意思?你的意思是发起一个新的线程?您的意思是与其方法在后台线程中运行的对象进行通信吗?您的模型在哪里适合所有这些?你到底卡在哪里了?
  • 请看更新

标签: java swing model-view-controller


【解决方案1】:

也许是我,但你的问题对我来说似乎仍然很广泛,所以我只能提供广泛的建议。

  • 我心中的关键是对象如何相互通信,我认为这对我来说比“线程”如何通信更重要。李>
  • 我认为最好使用观察者模式。
  • 如果您的线程是使用 SwingWorker 创建的,那么您有两种主要的方式与您的 Swing 应用程序进行通信:
    • 您可以使用发布/处理方法对,将对象传递给发布方法调用,然后进行 Swing 调用,或许可以通过process 方法更改模型的状态。我也不喜欢这种方法,因为增加了耦合,因为 SwingWorker 必须知道它在 process 方法内部调用的视图或控制代码的结构和行为。
    • 或者,您可以使用 SwingWorker 的固有 SwingPropertyChangeSupport 功能来允许侦听器(此处为控制器)收到工作器状态更改的通知。然后控制器可以提取已更改的信息并将其传递给模型。我倾向于这种方法,因为对我来说,松耦合更容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-11
    • 2011-02-12
    • 1970-01-01
    • 2013-01-31
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多