我正在寻找关于使用Java Swing进行结构化的应用程序的最佳实践的一些指导。我通常是一个Web应用程序的人,并试图遵循MVC。 MVC是典型的Swing应用程序吗?如果是这样,怎么样?Java Swing程序结构
回答
你会发现这个很简单example and discussion有帮助。
以下MVC是一个非常好的主意。据我所知,没有正式的Java Swing框架在做这件事,它们都专注于问题的“视图”方面。
就应用程序结构和MVC而言 - 我知道的最好的框架是Griffon。它不是Java - 它是Groovy,但它使它更具吸引力并且非常容易学习。 Griffon到Swing应用程序与Grails到web应用程序相同。
摆有一个MVC架构的比较好的设置,但实际上它结合了视图和控制器。 Swing中的组件可以将监听器附加到它们(控制器方面),然后从这些监听器(这些组件内)中可以相应地修改视图和模型。所以为了回答你的问题,是的,Swing会帮助用于Java应用程序的MVC方法。
在Swing中,您仍然有两个单独的VC:组件和侦听器。我说他们合并的原因是因为每个组件都可以有它自己的各自的监听器。这些听众通常会进行操作,并且是控制器方面。这些组件不仅可以在屏幕上查看,还可以将信息传递给这些听众。按钮按压,击键,焦点改变,窗口关闭等都由组件向相应组件的收听者报告。下面是一个简单的代码片段,其中包含一个动作监听器,它注册一个按钮。
ActionListener buttonListener = new ActionListener() {
public void actionPerformed(ActionEvent event) {
// Controller code
}
};
JButton button = new JButton("A Button");
button.addActionListener(buttonListener);
的ActionListener
基本上是控制器,但它取决于button
以从用户接收输入。这就是摆动muddles从纯MVC观点来看视图和控制器之间的差异,但在同一时间,该区别是仍然存在:
监听是控制器(减去直接解释输入)
组件是视图(可译为输入,并将其传递给控制器)
希望帮助:)
我不认为听众是控制器。它们可以简单地用于控制器来响应组件事件。 – 2010-07-01 20:47:07
这就是我的意思。在MVC方面,他们不是,但他们可以这样想。控制器接受输入并修改模型。听众可能不一定会接受输入,但他们当然可以用来操纵模型,并且像MVC的一些解释一样,修改视图。这一切都取决于你希望增加哪些部分的控制者责任。 – peppertherj 2010-07-01 21:05:58
有一个JSR(296),它描述了一个框架构建Swing GUI的,但它看起来像它已经忘记了,但看看下面的文章:
http://java.dzone.com/news/jsr-296-end-jframe
我也发现以下框架,最初是基于关闭它,它看好:
- GUTS GUI - http://kenai.com/projects/guts/pages/Guts-gui
- BSAF - http://kenai.com/projects/bsaf
想知道这些如何在实践中解决。希望他们帮助。
还有这个(但它看起来休眠) - http://github.com/hamnis/SAFF – Jon 2010-07-02 02:00:03
- 1. Java Swing GUI代码结构
- 2. Java Swing按钮冻结程序
- 3. Java程序结构建议
- 4. Java Swing简单程序
- 5. 程序Java Swing,Flex像
- 6. Java Swing - UI冻结
- 7. java swing swing与多线程
- 8. Java Swing +线程
- 9. 结构程序
- 10. 如何使用Swing在Java中构建我的图形结构?
- 11. Java应用程序代码结构
- 12. 如何在intelijidea中构建一个java swing应用程序
- 13. 调用modelToView()方法冻结Java Swing应用程序
- 14. 的Java Swing的MVC架构
- 15. Java swing的代码重构
- 16. Ruby程序结构
- 17. Java Swing线程库
- 18. 多线程Java Swing
- 19. Java Web应用程序AWT或Swing?
- 20. 跟踪在Java Swing应用程序
- 21. 使Java Swing应用程序持久化
- 22. 防止关闭Java swing应用程序
- 23. 用户在Java Swing应用程序
- 24. Java Swing应用程序的异常?
- 25. Java Swing应用程序JList null异常
- 26. Windows启动时的Java Swing Run程序
- 27. Swing,Java GWT,Servlets(Web应用程序)
- 28. 如何从Java Swing应用程序
- 29. 帮助Java程序(Swing +数据库)
- 30. Java全屏程序(Swing)-Tab/ALT F4
其实这些日子里Griffon比Groovy更Java(至少在它的实现中)。它可以让你用Groovy或Java编写应用程序,甚至同时编写一个应用程序。 – aalmiray 2011-12-03 19:50:47
我实际上正在等待Scala的全面支持(代码生成)。那真的很好。我以为你正在做这样的事情:) – 2011-12-04 17:49:55
它已经在那里。安装scala原型并开始商业运作。 '兀安装-原型的http:// svn.codehaus.org /兀/原型/阶/中继/阶/阶-兀-archetype.zip' '兀创建应用内样品-archetype = scala' 请注意,小程序模式尚未得到支持。你会发现你可以用Scala编写任何Griffon工件(Model,View,Controller,Service)。你甚至可以在视图中使用scala-swing。 – aalmiray 2011-12-04 19:17:08