对Java Swing经验的讨论

开发 后端
本文介绍对Java Swing经验的讨论,以及介绍为什么我们选择写自己的工具?开始,我们决定我们的工具应该包括五个要求。

当Abacus Research AG,一家商业软件开发公司,决定将开发平台从 Borland 的 Delphi 转向Java Swing时,它发现自己站在了软件开发的十字路口。

我们大量的应用程序开发团队拥有多年的Delphi GUI开发经验,却没有任何的Java Swing经验,并且我们需要在极短的时间内将大量的Delphi应用程序转换为Swing。在研究了当时可用的GUI工具后,我们觉得我们应该通过赞助一个GPL开源Java GUI编译器来达到自己的目标,而且这个编译器还可以帮助其他的应用程序开发者面对相同的挑战。

AbaGUIBuilder ,Abacus Java GUI编译器被设计用来实现轻松地从VB或Delphi开发转向Java Swing。这一策略帮助Abacus Research实现了其Java版应用程序的交付,缩短了开发时间,使其开发人员把精力投向商业应用,而不是Swing框架的错综复杂。

如图1所示,AbaGUIBuilder有能够在许多其他开发环境如VB和Delphi找到的要素。位于视窗左上角是活动对象树,其下是Swing组件选择区。位于视窗的中上部是开发面板,或者说是“画布”,在这里放入Swing组件将其实例化。在右上部是属性编辑器。下部是事件面板,包括两个制表符页,分别是事件代码编辑器,为每个单独的可视对象添加事件代码,和消息面板,显示AbaGUIBuilder的状态消息。

Abacus

Abacus GUI编译器

为什么做我们自己的GUI工具?

为什么我们选择写自己的工具?开始,我们决定我们的工具应该包括以下五个要求:
1. 容易使用
2.不需要布局管理器的使用经验
3. 不需要Swing的使用经验
4. 不需要输出Swing代码
5. 实现商业逻辑与UI的分离

我们在评估当时可用的GUI开发工具时发现好的IDE都是手写Swing代码,这就不符合我们的***个和最关键要求。

我们定义的容易使用是指任一开发者不管他/她的Java Swing经验,都具有在几分钟而不是几小时内开发一个可运行的GUI表单,因此就要是开发者的精力集中在商业逻辑上而不是框架的细节。一开始我们的开发者就需要所见即所得的环境,以便能够真实地感知当应用程序发布的时候的情况。这一功能的实现节省了开发者的大量时间。但当时我们评估的工具没有一个能够实现这个功能;设计的屏幕与输出的屏幕并不一样还有糟糕的调度算法,对我们来说简直就是巨大的倒退。AbaGUIBuilder通过预览模式来实现这一功能,你可以在开发时看到它运行起来的样子。

为什么Abacus Research要求UI和商业逻辑的分离?因为企业要处理不断变换的政府规则,例如税收和工资计算;我们需要在一个独立的包装模块里维护规则和公式时保持UI不变的能力,使得当公式改变时,应用程序JAR(UI)并不需要变化。因此只有改变的公式需要测试,使得发布的进程简单化。

为了满足这个需求,我们设计的GUI编译器将应用程序和事件汇编到一个应用程序JAR,JAR隐藏了所有的GUI Swing 代码并且通过一个renderer类(AdaRenderer)在运行时来执行应用程序。

Java Swing经验

为了确保开发工具能够做到真正的所见即所得,我们决定采用类似Delphi和VB中用XY坐标来定位的布局管理方式。采用这种方式,Swing JFrame就是一个画布,开发者可以将Swing组件放入JFrame的XY布局中。有了XY布局管理器,我们的开发者不需要理解Swing中并不熟悉的,复杂的布局管理器,这样我们的应用程序开发者就可以把精力集中到应用程序UI和它的商业逻辑中。

事实上,AbaGUIBuilder包含了大部分的Swing可视组件,从面板到制表符页,还有对菜单﹑菜单项,带有Java数据库连接的数据库感知组件,JFreeChart组件的支持,和导入第三方可视类库的能力。所有这些组件都可以从组件选择区拖入一个空框架来开发你的GUI应用程序。

【编辑推荐】

  1. 介绍Swing技术的应用
  2. 实现Swing ActionListener接口
  3. 浅析Accelerator key in Java Swing
  4. Swing控件的工作方式
  5. 全面介绍Swing容器
责任编辑:佚名 来源: 中国IT实验室
相关推荐

2009-11-13 16:53:12

Oracle文档

2010-05-04 18:14:50

Oracle 性能工具

2010-05-18 19:16:18

linux MySQL

2009-12-16 14:32:14

Linux Mint系

2009-06-09 16:53:22

Java Swing处理方法比较

2010-09-10 14:09:23

2009-08-19 09:51:31

Java入门

2009-07-10 10:47:01

Java Swing

2010-04-23 14:18:38

Oracle ROWI

2009-07-15 15:35:59

Swing程序Swing性能

2009-04-30 09:10:42

JavaSwing线程安全

2011-03-15 14:26:28

Java

2009-09-15 18:19:13

敏捷开发

2009-07-10 14:20:01

AcceleratorJava Swing

2012-01-17 14:05:29

JavaSwing

2012-01-17 14:09:54

JavaSwing

2012-01-17 13:41:34

JavaSwing

2009-07-10 11:45:44

Java Swing

2009-07-16 11:13:50

Java Swing

2012-01-17 13:46:55

JavaSwing
点赞
收藏

51CTO技术栈公众号