|
12
|
| Henning · 技术社区 · 16 年前 |
|
|
1
15
这是Java编程中文档严重不足的一个领域。正如您所提到的,从JFrame或JDialog扩展到开发GUI并不是一种好的设计实践,但您在示例代码中随处可见。 JSR 296是一个有用的起点,但它的架构存在一些严重的问题。我确实使用JSR 296,但我有自己的风格,并且必须始终解决框架设计引入的问题。 我一直认为应该有一个讨论组/wiki/一些专注于这个话题的东西。到目前为止,我发现各种富客户端库的listserv很有用,但并不全面。在我空闲的时候,也许可以考虑开始:-) 因此,我无法为构建swing应用程序的最佳实践提供任何明确的资源。但我可以给你一些我反复使用的工具包和概念的指针。也许这些会对你有所帮助。此外,如果有足够多的人对讨论最佳实践、共享代码等感兴趣……我很有兴趣参与其中。 首先,如果你要进行Swing开发,一些绝对关键的库:
编辑 GUTS 在我们的项目中(这是一个基于Guice的应用程序框架,它最初是JSR 296,但现在与它几乎没有共同之处)。GUTS仍然是一个年轻的项目,但如果你正在考虑框架,它值得一看。
现在介绍一些概念: A.表示模型——Martin Fowler对这种设计模式有很多了解。简而言之,它在GUI级别将行为与表示分离。如果你习惯MVC,Presentation Model会添加另一层分离,这对“实时”UI非常重要。我所有的观点都有相应的演示模型支持。最终的结果是,视图代码非常非常简单——专注于两件事:1。布局,以及2。将视图组件绑定到表示模型。就这样 B.视图不是JPanel的子类。相反,我遵循JGoodies启发的技术,将视图视为创建JPanel的构建器。基本模式是:
严格遵循这种方法,可以快速开发易于维护的UI。请注意,我们可以使用给定的视图来构建多个JPanel,这些JPanel都由相同的PresentationModel支持——视图生成的一个面板中的更改将立即在同一视图生成的另一个面板上可见。 C.使用操作而不是事件处理程序。JSR 296实际上在使Actions易于创建和使用方面做得很好。 D.对EDT进行长时间运行操作(甚至需要100毫秒)。JSR 296通过其任务支持使这一点变得相当容易,但296的任务系统在异常处理方面存在许多问题。如果你的属性更改反过来导致长时间运行的事件,一定要仔细考虑这些更改将发生在哪个线程上。使用任务对你的开发方式来说是一个很大的变化,但对于任何真正的Swing应用程序来说,这都是一个非常重要的领域——花时间了解一下。 E.资源注入很重要。从一开始就使用它(而不是告诉自己以后会添加它)-如果你发现自己在JLabel上调用了setText(),那么是时候坐下来调用setName()了,并在资源文件中添加一个条目。JSR 296使这很容易做到,如果你对此有纪律的话。 我认为这就足够了——这是一个非常复杂的主题,有很多细微差别。在过去的七八年里,我一直在努力做那些不起作用的事情,而且我一直在寻找更好的方法来做那些对我来说很有效的事情。 |
|
2
1
|
|
|
3
1
马丁·福勒已经开始 a development on his Patterns of Enterprise Application Architecture book 涵盖了原书中未涉及的一些模式,包括 GUI patterns . 虽然它的内容并不完全面向Java,但它们非常有价值。 |
|
4
0
你可以试试 Spring Rich Client project 。我对春季投资组合的其余部分有很好的体验。 |
|
|
Jörg · 如何更改多行JButton中的行距 1 年前 |
|
|
Clive Galway · 将摆动元件包装在面板顶部 1 年前 |
|
|
AlexHomeBrew · 如何将图像放在左上角的滚动窗格中 1 年前 |
|
|
Vithor Roder · Java CellEditor 1 年前 |
|
|
Dromlius · JPanel透支重叠的JComcoBox 1 年前 |