带有 JTree 的 Java Swing 应用程序 - MVC 设计 : Where to position a TreeModel object architecturally?

标签 java model-view-controller swing jtree treemodel

请原谅这个问题的冗长,因为在写这个问题时,我正在尝试思考我的设计问题!

我继承了一个 Swing 应用程序,需要将其重新架构为 RMI 应用程序。客户需要 Swing GUI 在本地运行并通过 RMI 与远程服务器进程进行通信,该进程包含一个 Controller 类,该类在受到事件监听器的刺激时将调用定向到业务逻辑部分和后端数据库持久性,从而弥合了 Swing 客户端之间的差距和 Controller 。

我将实现 MVC 设计,以允许开发新的 View 以与服务器一起使用。

当前,Swing 客户端 GUI 包含一个使用 DefaultTreeModel 填充的 JTree。该模型是使用 DefaultMutableTreeNode 对象构建的,这些对象通过位于这些对象和我的数据源之间的 BusinessObject 映射器填充业务对象状态。

我很容易理解 Client 和 TreeModel 是如何链接的:我已经建立了一个 TreeModelListener 来监视 TreeModel 的更改。如果 TreeModel 对象发生更改,我将通过调用其 treeHasChanged() 方法来重新绘制 JTree。

但是,我很头疼地试图想象什么过程会刺激 TreeModel,以便用数据库中的最新数据重新填充其内容,这反过来会调用我的 TreeModelListener 来更新我的 GUI 的 Jtree。谁应该“拥有”TreeModel?它应该是模型中构成 Controller 状态一部分的类吗? GUI 的事件监听器在 Controller 中的操作是否应该进行硬调用来运行例程来刷新 TreeModel?

或者 TreeModel 是 GUI Widget 的扩展,在这种情况下它是一个 View 组件?如果是这样,调用该对象状态刷新的正确方式是什么?

我可能应该注意到,最近几天我一直在考虑观察者和监听者,所以我可能会因为试图调用观察者触发后发生的行为而感到内疚。

你的,很困惑!

最佳答案

我不确定您是否描述了AbstractTreeModel or DefaultTreeModel ,我认为这篇文章Understanding the TreeModel仍然是最好的,并链接到 JTree tutorial

要获得真正的帮助,您必须编辑您的问题并在 SSCCE 中发布您的头痛图片。表格,here有大量创建 SSCCE

的良好基础

关于带有 JTree 的 Java Swing 应用程序 - MVC 设计 : Where to position a TreeModel object architecturally?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8272634/

相关文章:

java - 从 MySQL 数据库中检索数据并在 JTable 中显示

java - 为什么 AUTO_RESIZE_LAST_COLUMN 的作用与 AUTO_RESIZE_ALL_COLUMNS 类似?

java - 如何在设置铃声之前清除 Mediastore

c# - MVC TextBoxFor 和 PasswordFor 的动态 CSS 类

java - 访问修饰符的可访问性

.NET/MVC JSON 响应打开对话框进行保存

java - Struts2 推送通知/WebSocket 交互最佳实践

java - Java 中的 JPanel 问题

java - 读取数据的数组映射

java - 从 ASP.NET 开发转向 Java 我应该学习什么开发堆栈?