轻松从转向基于的开发平台物业
民生呼声 2021-08-25 04:06 字号: 大 中 小
代码到哪里去了?
我们经常听到这样的问题:代码去哪了?AbaGUIBuilder并不是不创造Java代码,只不过是编译器内部生成的Java代码不被看到和用到而已。GUI编译器通过运行独立的包装程序(renderer)将内部代码编译到应用程序的jar文件中。事实上,你可以在\\bin\\output目录下检测AbaGUIBuilder产生的Java代码。但是切记,这些代码并使被外部使用的;它只不过作为一个辅助工具,当编译器生成的代码万一有问题时使用。
生成项目文件(.proj)后,GUI编译器生成两个文件,你的应用程序jar文件和decl文件。随后当你写包装器文件时,decl文件会有帮助。它包含了所有的对象定义和一个通用入口函数getReferences(),并且它将UI表单的所有可视元素写为私有变量。我们可以使用decl文件程序段中的这些私有变量实现商业逻辑和UI的分离。
开发过程中,我们推荐你使用例子文件夹中的runproz脚本来运行你的应用程序jar文件。这个脚本文件设置了classpath,填交了所有需要的JAR,使用示例Java包装器来运行应用程序JAR。如图9,当你运行devteam应用程序时,命令如下:runproz \\abaguibuilder-1.7\\samples\\r
图9. 部署应用程序.
理解runproz的机制很重要,虽然很简单,让我们注意下行:\"%JAVA_HOME%\\bin\\e\" exec %1
exec是示例包装器AbaRenderer提供的默认加载机制,参数%1指的是AbaGUIBuilder应用程序JAR的名字。当JAR的路径和名字传给va时,它将加载和运行指定的应用程序JAR。这就是应用程序JAR运行的机制。
陈大爷则搬到高明县城与幺儿陈六同住。陈六认为 编写自己的包装器
AbaRenderer包装器是一个用AbaRenderer 对象来加载应用程序jar的Java程序。包装器是一个仅仅需要几行代码的简单程序。
public classexec
{
public static AbaRendererm_AbaRenderer ;
// Assignments for this user interface
public static void main(String[] args)
{
String docname = new String(args[0]);
try
{
intln(\"Loading..\" + docname);
m_AbaRenderer = new AbaRenderer(docname, true , null);
boolean bTestLoad = m_ad();
if(bTestLoad)
m_nderInterface(); }
catch(Exception e)
{intStackTrace();}
}
}
当部署应用程序时,你可以选择使用runproz和示例包装器来发布它,也可以使用你自己写的包装器和classpath。当你需要为你的包装器增加其它的一些特征时我们推荐你编写自己的包装器,例如:使用第三方程序库的监听器,手工初始化对象,为组合框增加代码,或者最后将UI从业务逻辑中分离出来等。
将业务逻辑从UI中分离出来
为了将应用程序的UI和业务逻辑分离开,你必须写自己的包装器。一个分离的简单例子就是在开发工具和项目以外,通过包装器手工地初始化应用程序的可视组件。当你再次调用时,GUI编译器生成一个声明文件。这个文件有一个访问方法可以初始化一系列私有变量,这些私有变量是表单上可视对象的引用。getReferences()方法允许开发者访问和操作表单上的任一可视组件。
下面的exec2程序在第一个制表符位置初始化了一个组合框,示范了一个简单的应用程序UI和业务逻辑的分离:
public classexec2
{
public static AbaRendererm_AbaRenderer ;
// Declarations of variables for this user interface.
…….
private JComboBox JStComboBox;
// Assignments for this user interface
public void getReferences()
{
…..
//Loads the visual object JComboBox1 to private data JComboBox1
JStComboBox= (JComboBox)m_tObject(\"JComboBox1\");
…..
}
// Assignments for this user interface
public static void main(String[] args)
{
String docname = new String(args[0]);
try
{
intln(\"Loading..\" + docname);
m_AbaRenderer = new AbaRenderer(docname, true , null);
boolean bTestLoad = m_ad();
if(bTestLoad)
{
m_nderInterface();
getReferences();
// Sample access to objects
dItem(\"FL\");
dItem(\"CA\");
dItem(\"WA\");
dItem(\"MD\");
dItem(\"PA\");
}
}
catch(Exception e)
{
intStackTrace();
}
}
}
上面例子演示了一个简单、清晰的UI和业务逻辑的分离。明显的优势就是你可以轻松地改变初始化例程而不需要改变应用程序UI。你将发现当你的应用程序变得越来越大,越来越复杂时,这一特征越来越重要——对于所有的开发项目而言,这将是一个值得效仿的做法。
结论
AbaGUIBuilder最初是为了满足我们的Delphi应用程序开发者的需要而设计的,节省了很多开发时间,而且是我们的GUI开发转换变得容易。对于其他的大多数Delphi和VB的开发者而言,它也能做得很好。
资源
·下载本文源代码:
·下载AbaGUIBuilder:
·Screen shots和其他文章:
·Abacus 研究:
·更多关于GUI开发的文章,请浏览JavaWorld文章列表的用户界面设计部分:
·GUI编程论坛:
版权声明:任何获得Matrix授权的站,转载时请务必保留以下作者信息和链接
原文:
译文:
查看本文来源
广州治疗阳痿哪家好福州治疗包皮过长医院
柳州哪医院治疗白癜风好
-
-
又一超巨自曝曾遭遇心里疾病并分享治疗经历搭配
又一超巨自曝曾遭遇心里疾病 并分享治疗经历格里芬北京时间...
2020-05-31 | 民生呼声
-
-
CES中国原型车耐力系列赛揭幕三大赛事巨搭配
CES中国原型车耐力系列赛揭幕 三大赛事巨星同台2018CES中国原...
2020-05-31 | 民生呼声
-
-
昌江拟启动14片区棚户区改造3年改造提升搭配
昌江拟启动14片区棚户区改造 3年改造提升老旧城区穿过昌江黎...
2020-05-27 | 民生呼声
-
-
湖滨街道滨湖社区开展青少年经典诵读活动
湖滨街道滨湖社区开展青少年经典诵读活动11月27日,湖滨街道...
2019-12-17 | 民生呼声
-
-
623一周年牵挂重建安置和受灾群众的李强
“6.23”一周年,牵挂重建安置和受灾群众的李强第四次到阜宁...
2019-07-16 | 民生呼声
-
-
区救助管理站采取措施做好酷暑季节救助管理
区救助管理站采取措施做好酷暑季节救助管理工作金山区救助...
2019-07-13 | 民生呼声