从pitch公司下载的testfederate例子代码不全,很多菜单响应函数都被注释掉了,直接去掉注释会出现很多编译错误。因此,不建议使用那个例子。
本文中例子是从http://www.mitre.org/tech/hla_book/ 下载的最新的testfederate例子,此代码齐全,可以编译运行。
编译运行此例子的步骤如下:
1 在path环境变量下加入jdk的bin目录,同时在classpath环境变量下加入lib/prti.jar;
2 运行C:/Program Files/prti1516/samples/book/src>javac org/mitre/hla/book/test_federate/*.java命令编译程序,注意此命令是在src作为当前目录的情况下执行的。
3 直接在C:/Program Files/prti1516/samples/book目录下运行rti.bat和testfed.bat两个批处理文件,注意修改批处理文件,把jre程序换成java程序。
--------------------------------------------------------------------------------------------------------------
此例子加入GUI,用户可以通过菜单执行方式测试。基本的结构跟Chat例子很相似:所有federate都使用同样的一个程序,通过不同的joinFederateExecution来产生不同的联邦。
FED文件不是xml格式的,而是书上提到的那种格式。
源代码中对不同的菜单项进行了编号,因此很容易找到其对象的处理逻辑。基本上所有的菜单响应都分成三部分:
第一部分,在TestFederateFrame.java中通过addActionListener函数加入对菜单项的处理函数,比如
createFedExMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
createFedEx_Action(e);
}
});
第二部分,在TestFederateFrame.java中的消息响应函数,比如createFedEx_Action: