Swing桌面开发

Swing桌面开发,swing,jgoodies,spring-rcp,Swing,Jgoodies,Spring Rcp,关于java桌面gui应用程序,我有一个非常普遍的问题 我的经验: 在过去的几年里,我开发了许多桌面应用程序,一些单独使用Swing,一些使用SpringRCP(这很好,但我不能只赌一个3年多没有更新的框架)。我也在看瓦尔基里RCP,但在我看来,那里也没有太多的运动。我还使用Wicket、Tapestry和最近使用JSF2(Primefaces)开发了web应用程序。在web应用程序方面获得了一些经验,我觉得java桌面gui很久以前就被抛弃了。当然,我以前没有注意到这一点,但在开发web应用程

关于java桌面gui应用程序,我有一个非常普遍的问题

我的经验: 在过去的几年里,我开发了许多桌面应用程序,一些单独使用Swing,一些使用SpringRCP(这很好,但我不能只赌一个3年多没有更新的框架)。我也在看瓦尔基里RCP,但在我看来,那里也没有太多的运动。我还使用Wicket、Tapestry和最近使用JSF2(Primefaces)开发了web应用程序。在web应用程序方面获得了一些经验,我觉得java桌面gui很久以前就被抛弃了。当然,我以前没有注意到这一点,但在开发web应用程序之后,我真的看到了桌面UI编程是多么痛苦和复杂

我在寻找什么: 我在这里不做任何火箭科学,我最怀念的是一个简单的方法来建立以下简单布局的形式

label_a    input_a    feedbackMessage_a
label_b    input_b    feedbackMessage_b
....
button_save
这不仅仅是关于布局,这可能是最小的问题。首先,我正在寻找一种将输入字段的值“绑定”到某种“支持bean字段”的方法。我还想使用直接反馈,这意味着如果输入_a的验证失败,我希望在feedbackMessage_a上显示一条消息,而不是在其他地方。第三,我想用JSR-303验证这个直接反馈。 如果我深入研究典型桌面应用程序的源代码,我通常会看到每个按钮都有一个巨大的操作侦听器,其中所有的值分配、验证和反馈消息创建都是手动编写的。将其与tapestry或jsf2等webframework进行比较。这里要做的是用某种表达式语言将inputfield“绑定”到变量/字段,就是这样。该值正在得到验证(例如,使用JSR-303注释),并且(如果所有值都有效)自动传递到支持bean的绑定字段中。此外,如果发生验证错误,将创建验证消息,其中inputfield的id用于标识负责的输入字段。如果存在该特定id的消息组件,则会在其中设置验证消息。它只是顺理成章的

现在跳回到桌面gui;要为一个具有20个inputfields的表单提供一个可比较的用户界面,我可能需要500行侦听器代码,首先我自己读取每个textfield的值,自己验证并将其写入相应的变量中。如果我使用JSR-303,我可以自己调用验证器,但是返回到相应的inputfield并在那里设置反馈消息会很痛苦..猜怎么着。。我自己很痛苦,不是吗

我的问题: 有什么办法减轻疼痛吗?如何开发现代桌面应用程序?您使用什么框架?为什么?有没有可能像webframeworks那样使用类似的绑定方式?我如何实现上面解释的“直接反馈”?我是否错过了这里的火车,或者在过去几年中,当java桌面似乎陷入困境时,编写web应用程序真的变得那么简单了吗?(除了JavaFx,但这对我一点帮助都没有)

最后一句话 别误会,我是java桌面应用程序的忠实粉丝。在一家中等规模的公司,比如我所工作的公司,在一个同质的环境中(所有客户端都安装了相同的java版本等等),我真的看不到Web应用程序的好处。使用webstart,应用程序启动得非常快(当然是在第一次下载之后)。 尽管如此,在我看来,尽管Java中以前端为中心的Web框架以光速向前发展,但Java桌面几乎没有任何进展。
虽然我可以接受现在的生活方式,但我真的不得不问这个问题。

我可以建议你看看吗?它是基于Java/Eclipse的,可以在EPL下使用

Scout主要解决构建业务应用程序的问题。通过将客户端ui模型与实际ui呈现清晰地分离,您可以选择使用EclipseSWT、Swing或web应用程序运行应用程序(基于EclipseRAP,这将随Juno发布而来)

关于您对字段验证的问题,我相信您会发现提供的机制(覆盖所需字段的方法execValidate())使用起来很方便

请查看我们wiki页面上的可用教程。如果您只需要一个客户机解决方案(没有支持服务器),也可以考虑这一点。p> 有关Eclipse Scout的问题,请使用项目论坛


希望这能有所帮助。

我从使用JGoodies验证框架的用户那里听到了很好的反馈,甚至与他们的
FormLayout
结合使用,顾名思义,这是一个
LayoutManager
专门设计用于使组件看起来像表单

我个人只有
FormLayout
和内部开发的绑定框架方面的经验,您所描述的UI的创建归结为每个标签编辑器组合的一行代码。 当然有一些图书馆可以提供给你这些,但我没有使用它们的经验,所以在这方面没有建议

表格式
  • (直接链接)
  • 使用
    FormLayout
验证框架
  • 他们正在运行的验证框架的屏幕截图

遵循流行且成功的桌面模式,结合干净的实现风格,您可以减轻痛苦。我强烈建议您学习模型-视图-演示者(MVP)模式和演示模型

Fowler的“组织表示逻辑”是一个很好的介绍。关于实现风格,请参见幻灯片上的“Guter Schreibstil für Swing”,幻灯片是德语,代码是英语;-)

我不能