java - 如何在 Java Swing 中正确设计 MV 应用程序?

标签 java swing model-view

我正在尝试用 Java swing 设计一个 MV(模型- View Controller )应用程序。我无法为每个 ViewController 分配正确的模型。

这是我当前的设计(不是实际名称): class diagram

我的想法是有两个 View :Gui 和 Midi 设备。

每个 View 都有其对应的模型。然而,Gui(ButtonBar)的一部分需要访问midi设备模型。

目前,我的解决方案是将 MidiDevice 模型传递给 MainWindow 的构造函数,然后让它传递给 MyPanel 构造函数,然后传递给 ButtonBar...对我来说,这听起来很糟糕的设计和 future 的复杂性。

您建议什么更好的方法?

最佳答案

一种方法是让设备 View 和/或模型导出 Action ButtonBar 所需的实例。在这个简单的example , View 导出用于控制显示本身的操作。在更复杂的例子中引用here ,由 EditorKit 提供的操作子类对文本组件使用的 Document 模型进行操作;聆听 View 会根据响应自行更新。这个example使用此类操作创建一个 JToolBar。最后,JHotDraw ,引用here ,动态生成操作以在工具栏中使用,如所讨论的 here .

关于java - 如何在 Java Swing 中正确设计 MV 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37884313/

相关文章:

java - JTableModelListener.tableChanged() 线程安全吗?

c++ - 更新 QSqlTableModel 中的记录

qt - QListView 带有用于查看文件系统的复选框

java - Netty 中的 I/O 线程是什么?

java - 使用基于对象的 run() 方法而不是静态 main 有什么优势吗?

multithreading - 将多个嵌入式 javafx JFXPanel 管理到 swing tabbedpane 中

java - EventQueue.invokeLater 与 Thread.start

java - 如何使用 twitter4j 库?

java - 在 Frame 内的 Applet 顶部绘制

python - 最小化 QTreeWidgetItem 中 QTextEdit 的大小