如果您想了解更多详细信息,请告诉我,或参阅此问题的最后几行。我已经读了很多书,我觉得我正在把一些简单的东西变成复杂的东西,但我仍然被困在这里和那里,所以也许你可以在那些非常具体的点上帮助我。
我使用的是 Netbeans IDE 7 和 JDK 7,没有框架。第一个窗口是 JFrame,所有其他窗口都是 modal=true 的 JDialog。
问题:
-
如何用swing正确实现MVC模式?
根据以下想法,哪一个更好:(A)或(B)?或者也许是另一个......为什么它更好?
(A)
主要的:
MyModel model
MyView view(model)
MyView:
MyController(this, model)
(B)
主要的:
MyModel model
MyView View
MyController controller(view, model)
当我在 MainFrame 中单击 jbutton1 时,我需要它打开 SettingsFrame 来编辑设置。我应该在哪里实例化SettingsFrame的View、Model和Controller?在大型机控制器中?
-
在 MVC 组织和实现方面,我应该如何处理(显然)缺少一两个 MVC“腿”(模型、视图或控制器)的更具体功能?我应该为他们创建空类吗?
a. The implementation of a TrayIcon
b. A URL connection class (an HttpsUrlConnection which will update data in the main jframe and also upload/download files)
c. A Directory Monitor (which will update data in the main jframe and also use the urlconnection to download a file)
d. My own implementation of TableModel
e. json
如何在整个应用程序中正确保留和使用带有设置的对象?我将需要它在不同地方(视图、模型、控制器)的信息,但它可能会在运行时被用户更改)。让这个模型成为单例是个好主意吗?
-
当出现以下情况时我应该做什么:
a. View needs some data from the Model?
What I'm doing: using the reference of Model which I keep in the View
b. View needs some data from the Controller?
What I'm doing: using the reference of Controller which I keep in the View
c. Model needs some data from the Controller?
Still didn't happen but I have no idea how to do correctly
d. Model needs some data from the View?
What I'm doing: pulling all my hair from my head...
e. Controller needs some data from the View?
What I'm doing: using the reference of the View which I keep in the Controller
f. Controller needs some data from the Model?
What I'm doing: using the reference of the Model which I keep in the Controller
g. One of FooModel, FooView or FooController needs data from one of BarModel, BarView or BarController?
What I'm doing: thinking of jumping from the highest building...
有关如何知道我是否正确实现 MVC 的任何提示吗?我应该在模型还是控制器中处理海量数据?
-
我也在使用 DAO,我正在做的是:我的模型有一个
ArrayList MyModel 加载()
方法创建 DAO 的实例并返回 DAO 返回的模型的 ArrayList,然后有时我在模型中处理这个模型的 ArrayList,有时我允许控制器处理它。这是一个好的做法还是有更好的方法?我所说的过程是指:迭代 ArrayList 并从模型中获取数据。
我有一个 PasswordCheck jDialog 来限制对某些视图的访问。我如何在 MVC 方面重用它,以便我可以使用相同的密码检查对话框来允许/限制对不同视图的访问,而不会使代码混乱?
还有其他提示、提示、想法或建议吗?
Context:我需要在短时间内开发一个 Java Swing MVC 软件,尽管默认情况下我不是 Java 开发人员,也不习惯实现 MVC 模式,特别是在 Java 中(我明白了这个想法,但有时它缺乏我的知识)实现类之间的关系)。
该应用程序基本上是本地/在线文件的监视器,在主框架中使用 JTable 来显示此数据。我使用新的 WatchService API 来跟踪本地文件并使用 DAO 将其信息保存在 h2 数据库中,然后将这些数据重新加载到主机 jtable 中。我还必须通知用户有关新文件的信息(我正在使用 TrayIcon)。对于在线文件监控/上传/下载,我使用 HttpsUrlConnection 和 json。它还可能允许设置自定义。
预先感谢您的时间和帮助。
看一下Sun(Oracle)的建议.
作为一种简化,您可以让每个组件(模型、视图、控制器)向顶级应用程序组件注册,以提供单个引用点,而不是每个组件(A 或 B)之间的单独引用。我引用的文章提供了推式和拉式设计的想法;我建议将推送作为一种更流行的现代方法。声明:我有 Java 和 MVC 的经验,但没有 Swing 本身的 MVC 经验。
我应该在哪里实例化视图、模型和控制器
设置框架?
当然,是的,或者在顶级应用程序组件中。
我应该如何处理(显然)缺少的更具体的功能
或者 MVC 的两条“腿”(模型、视图或控制器)?
我会将仅 GUI 的部分实现为您自己的 GUI 库。纯粹的算法/服务片段作为服务库。
我应该在模型还是控制器中处理海量数据?
数据处理算法非常适合控制器甚至服务库;除了可能的数据类型转换或验证之外,您的模型根本不应该进行太多处理。
如何在整个应用程序中正确保留和使用带有设置的对象?
请参阅我的注册说明;单例可能是合适的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)