Swing桌面开发

Mar*_*o B 5 swing jgoodies spring-rcp

关于Java Desktop-gui-applications,我有一个非常笼统的问题。

我的经验: 在过去的几年中,我开发了许多桌面应用程序,其中一些单独使用Swing,一些使用Spring-RCP(这很棒,但是我不能只赌一个尚未更新超过3个的框架)年了)。我也在看Valkyrie RCP,但是在我看来,那里也确实没有那么多动作。我还使用Wicket,Tapestry和最近的JSF2(Primefaces)开发了Web应用程序。在Web应用程序方面积累了一些经验后,我感觉Java桌面GUI已被放弃很久了。当然,我以前没有注意到这一点,但是在开发了Web应用程序之后,我真的看到直接比较桌面uis是多么痛苦和复杂。

我正在寻找的是: 我在这里没有做任何火箭科学,我最想念的是一种构建以下简单布局形式的简便方法

label_a    input_a    feedbackMessage_a
label_b    input_b    feedbackMessage_b
....
button_save
Run Code Online (Sandbox Code Playgroud)

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

现在回到桌面GUI;为了有一个可比的用户界面,比如说一个带有20个输入字段的表单,我可能需要500行侦听器代码,首先我自己读取每个文本字段的值,然后对其进行验证并将其写入相应的变量中。如果我要使用JSR-303,我可以自己打电话给验证器,但是回溯到相应的输入字段并在那里设置反馈消息会很麻烦。很痛苦,不是吗?

我的问题: 有什么方法可以减轻疼痛?您如何开发现代桌面应用程序?您使用什么框架,为什么?是否有可能使用类似webframeworks的绑定方式?如上所述,我如何实现“直接反馈”?我是否错过了这里的培训,或者在过去几年中编写Web应用程序变得更加简单,而Java桌面似乎停滞了呢?(除了JavaFx,但这对我没有帮助)

结束语 别误会,我是Java桌面应用程序的忠实拥护者。在一个我正在工作的中等规模的公司中,在同类环境中(所有客户端都安装了相同的Java版本,依此类推),我真的没有看到Web应用程序的收益。使用webstart,该应用程序启动非常快(当然,在首次下载后)。在我看来,尽管Java中以前端为中心的webframeworks以光速前进,但java-desktop几乎没有动。尽管我可以忍受这样的方式,但我确实必须问这个问题。

Rob*_*bin 5

我听取了使用JGoodies验证框架的用户的反馈,甚至与FormLayout顾名思义的用户结合使用,顾名思义,该框架LayoutManager专门用于使组件看起来像表单。

我个人只有使用FormLayout和内部开发的绑定框架的经验,在该框架中,您描述的UI的创建归结为每个标签编辑器组合的单一代码。肯定有可用的库可以为您提供这些信息,但我对它们没有经验,因此在这方面没有任何建议。

表格布局

验证框架