,Java   工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛,Java
您的位置:软件 > 开发者网络 > 开发工具 > Java > 正文
JBuilder 2005开发Applet游戏全接触
[文章信息]
作者:陈雄华
时间:2005-02-22
出处:天极网
责任编辑:方舟
[文章导读]
本文拟通过一个耳熟能详的指法练习游戏讲解如何在JBuilder 2005下开发Applet应用程序
advertisement
热点推荐
· 深入探讨SQL Server 2000对XML的支持
· Swing(空)
· 3DS Stodio Max 宝典
· 中小企业服务器配置方案--前 言
· 中小企业服务器配置方案--代理接入服务器(3)
[正文]

上一页  1 2 3 4 5 6 7  下一页

  程序框架

  1、利用向导生成Applet

  首先创建一个工程(File->New...->Project->双击Project页中的Project图标),我们将工程名取为game,然后利用下面的步骤,调用Applet向导生成TypeTrainApplet。

  1) 启动Applet向导

  File->New...->Web->双击Web页中Applet的图标启动共4步的Applet向导。

  2) 向导第1步,填写Applet的详细信息。


图 4 Applet向导第1步

  ·ClassName:Applet的类名,填入TypeTrainApplet

  ·Package:包名,接受默认值

  ·Base Class:父类,有两个选项,一个是java.applet.Applet,另一个是javax.swing.JApplet。前者以AWT为基础,而后者以Swing为基础。如果客户端浏览器的JRE版本很低,且你不希望客户下载额外的插件,则需要考虑用java.applet.Applet,且不能应用高版本JDK中的特性,这里我们用javax.swing.JApplet。

  ·Generate header comments:在产生Applet代码时,产生类标题头的注释说明,你大可不必生成这些注释。

  ·Can run standalone:是否将Applet设置为可独立运行,如果勾选,JBuilder为其生成了一个main函数,这样就可以在脱离浏览器或AppletViewer的情况下,像一般可运行类一样运行这个Applet中的功能,我们不勾选它。

  ·Generate standard methods:是否生成Applet的标准函数,大家都知道Applet通过4个函数管理着Applet的生命周期,它们分别是init()、start()、stop()、destroy()。如果不勾选这个选项,向导只会生成init()方法,而其他3个方法不会生成。在我们的例子中,需要用到其他3个方法,所以需要勾选。

  按Next到下一步。

  3) 定义Applet的参数

  Applet的参数是指通过网页中<applet>标签的<param>指定的参数值,这些值可以在Applet类中引用到。这样就允许在不改变Applet程序的情况下,仅通过网页中<applet>属性值的更改控制Applet的表现。我们在这一步中为Applet设置4个控制变量参数,如下图所示:


图 5 为Applet设置参数

  这一步的设置,不但为网页生成了参数声明,还为Applet程序生成了从网页获取参数值的方法,在Applet初始化时,即将网页中的参数值赋给Applet的成员变量。

  点击Add Parameter新增一行,声明一个新的参数,其中Name*为网页中参数的名字,而Variable*为Applet类成员变量名,通过Type*栏设置成员变量的数据类型。你还可以为参数在Default栏中指定一个默认的值,在Desc中给出描述说明信息,其中带*的栏是必填的栏。

  点击Next到下一步。

  4) 设置包含这个Applet的网页

  在这一步里,我们指定包含这个Applet网页的<applet>标签的一些属性,如下图所示:


图 6 设置引用Applet的网页

  JBuilder会生成一个引用Applet的HTML网页,网页名字和Applet的类名相同,网页通过<applet>标签引用Applet,网页的标题及<applet>属性值在这一步中设置。

  我们除将Height从默认的300调整为400,其他的都保持不变。按Next到最后一步。

  5) 创建运行配置项

  在这一步里JBuilder允许你决定是否为Applet生成一个运行配置项,运行配置项是允许你配置运行时的有关属性,如运行的入口类,在运行时是否重新编译等,你也可以通过Project->Project Properties...->Run来维护运行配置项。


图 7 设置Applet运行配置信息

  点击Finish完成Applet的创建向导。此时JBuilder为这个Applet生成了两个文件,一个是TypeTrainApplet.java程序文件,而另一个是引用这个Applet的TypeTrainApplet.html网页。我们来看这两个文件的主要结构。

  代码清单 1 TypeTrainApplet.html 引用Applet的网页表

1. <html>
2. <head>
3.  <meta http-equiv="Content-Type" content="text/html; charset=GBK">
4.  <title>
5.   HTML Test Page
6.  </title>
7. </head>
8. <body>
9. game.TypeTrainApplet will appear below in a Java enabled browser.<br>
10. <applet
11.   codebase = "."
12.   code = "game.TypeTrainApplet.class"
13.   name = "TestApplet"
14.   width = "400"
15.   height = "400"
16.   hspace = "0"
17.   vspace = "0"
18.   align = "middle"

19. >
20.  <param name = "stepLen" value = "2">
21.  <param name = "stepInterval" value = "50">
22.  <param name = "columnCount" value = "10">
23.  <param name = "generateInterval" value = "500">

24. </applet>
25. </body>
26. </html>

  在向导第2步所设置的Applet参数悉数在网页中定义(第20~23行),在向导第3步中设置的Applet属性反映在第11~18行中。

  Applet类的TypeTrainApplet.java文件代码如下所示:

  代码清单 2 TypeTrainApplet.java

1. package game;
2.
3. import java.awt.*;
4. import java.awt.event.*;
5. import java.applet.*;
6. import javax.swing.*;
7.
8. public class TypeTrainApplet1 extends JApplet {
9.  boolean isStandalone = false;
10.  BorderLayout borderLayout1 = new BorderLayout();
11.  int stepLen;
12.  int stepInterval;
13.  int columnCount;
14.  int generateInterval;

15.
16.  //Get a parameter value
17.  public String getParameter(String key, String def) {
18.   return isStandalone ? System.getProperty(key, def) :
19.   (getParameter(key) != null ? getParameter(key) : def);
20. }
21.
22. //Construct the applet
23. public TypeTrainApplet1() {
24. }
25.
26. //Initialize the applet
27. public void init() {
28.  try {
29.   stepLen = Integer.parseInt(this.getParameter("stepLen", "2"));
30.  } catch (Exception e) {
31.   e.printStackTrace();
32.  }
33.  try {
34.    stepInterval = Integer.parseInt(this.getParameter("stepInterval",
35.            "50"));
36.  } catch (Exception e) {
37.   e.printStackTrace();
38.  }
39.  try {
40.   columnCount = Integer.parseInt(this.getParameter("columnCount",
41.          "10"));
42.  } catch (Exception e) {
43.   e.printStackTrace();
44.  }
45.  try {
46.   generateInterval = Integer.parseInt(this.getParameter(
47.             "generateInterval", "500"));
48.  } catch (Exception e) {
49.   e.printStackTrace();
50.  }
51.  try {
52.   jbInit();
53.  } catch (Exception e) {
54.   e.printStackTrace();
55.  }
56. }
57.
58. //Component initialization
59. private void jbInit() throws Exception {
60.  this.setSize(new Dimension(400, 300));
61.  this.getContentPane().setLayout(borderLayout1);
62. }
63.
64. //Get Applet information
65. public String getAppletInfo() {
66.  return "Applet Information";
67. }
68.
69. //Get parameter info
70. public String[][] getParameterInfo() {
71.  java.lang.String[][] pinfo = { {
72.   "stepLen", "int", "每次下落的步长"}, {
73.   "stepInterval", "int", "每移动一个像素的间隔时间,以毫秒为单位"}, {
74.   "columnCount", "int", 分成多少列"}, {
75.   "generateInterval", "int", 分成多少列"},
76.  };
77.  return pinfo;
78. }
79.
80. //static initializer for setting look & feel
81. static {
82.  try {
83.   //UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
84.  } catch (Exception e) {
85.  }
86. }
87. }

  其中第11~14行定义了对应向导第2步所定义的参数变量,第70~78行获取参数的注释信息。在Applet通过init()初始化,在init()中调用方法将网页中参数的值赋给Applet类的成员变量,以初始化变量的值。在第59~62行设定了Applet的大小,其值应该和网页中<applet>的width和height属性值一致。

  2、设计Applet界面

  打开TypeTrainApplet.java,切换到Design视图页面中,设计如下的Applet界面


图 8 Applet界面设计

  承继JApplet的Applet其默认的布局管理器是BorderLayout,首先在其东区(BorderLayout.EAST)放置一个infoPnl的JPanel组件,将infoPnl的布局管理器设置为GridLayout,9行1列,即在jbInit()方法中通过infoPnl.setLayout(new GridLayout(9, 1));设置。再在infoPnl上依次放置9个组件,这些组件的类型和用途分别说明如表所示:

  表 2 组件说明

组件名 组件类型 用途
jButton1 JButton 开始/暂停按钮
jButton2 JButton 结束按钮
jButton3 JButton 保存按钮
totalLbl_1 JLabel 总数标签
totalLbl_2 JLabel 总数值显示标签
rightLbl_1 JLabel 正确数标签
rightLbl_2 JLabel 正确数值显示标签
errorLbl_1 JLabel 错误数标签
errorLbl_2 JLabel 错误数值显示标签

  你只要从设计器窗口左边的组件库中用鼠标将组件拖到设计窗口的相应位置,并放开鼠标就可以了相应生成用户界面的代码了。

  由于画布组件没有java.awt.Canvas并没有列在JBuilder的组件面板中,你可以直接通过编码的方式把画布组件放到Applet的中区(BorderLayout.CENTER),了可以点击JBuilder可视化设计器的Bean选择器图标 (位于组件库的上方),在弹出的Bean Chooser对话框中选择java.awt.Canvas,如下图所示:


图 9 通过Bean选择器选择Canvas组件

  在Bean Chooser对话框中有一棵以包组织的类树,选择Canvas类,再点击OK按钮,在可视化设计器的Bean选择器的下拉菜单中将出现java.awt.Canvas的类,如下图所示:


图 10 Bean选择器中的Canvas组件类

  点击下拉菜单中的java.awt.Canvas,鼠标移到Applet设计界面的中心点击一下,一个画布组件就被添加到Applet的中区去了。在组件树中选中这个Applet中,将其命名为canvas,并确认其Constaints属性是CENTER(即位于中区)。

  3、游戏的统计数据

  游戏包括3个统计数据,即已产生字母的总数,被正确击中的字母数及未被击中的字母数。需要有3个变量来保存这些统计数据,同时还需要一个方法,将数据写到Applet界面的统计标签组件中去。当用户点击开始按钮时调用resetGame()方法将这些统计数据归0。

  我们在TypeTrainApplet中添加以下粗体的代码。

  代码清单 3 统计数据

1. …
2. public class TypeTrainApplet extends JApplet
3. {
4.  …
5.  volatile int totalCount = 0;//总数计数器
6.  volatile int rightCount = 0;//正确数计数器
7.  volatile int errorCount = 0;//错误数计数器
8.  public TypeTrainApplet()
9.  {}
10.  …
11.  //将统计结果画到界面上
12.  private void drawResult()
13.  {
14.   totalLbl_2.setText("" + totalCount);
15.   rightLbl_2.setText("" + rightCount);
16.   errorLbl_2.setText("" + errorCount);
17.  }
18.  //重置现场
19.  private void resetGame()
20.  {
21.   totalCount = 0;
22.   rightCount = 0;
23.   errorCount = 0;
24.   drawResult();
25.  }

26.  …
27. }

  drawResult()方法以下两种情况下都应被调用:

  ·击中一个字母。

  ·一个字母下落到底端。

  而resetGame()方法在点击开始按钮后调用,将3个统计变量归零,以便重新开始统计。


上一页  1 2 3 4 5 6 7  下一页

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
天极社区邀请您:写博客日记  上传相片   论坛聊天  订阅电子杂志  推荐网摘   免费图铃工具
笔名:   请您注意:

 遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

 天极网拥有管理笔名和留言的一切权利。
评论:
 
,Java相关内容,Java焦点新闻
  • 关于Java栈与堆的思考
  • 大道至简 Java 23种模式一点就通
  • JavaBeans程序开发从入门到精通
  • 使用SWT开发基于Java的图形用户界面
  • Java加密和数字签名编程快速入门
  • FVD刺激高清碟机加速商业化 抢占商机最重要
  • 3家搜索引擎集体诉讼8848 吕春维未敢出席
  • 杨元庆:没有准备不会获批的备用方案
  • 军队信息化诞生新领域 电子军务呼之欲出
  • 世界经济论坛公布信息化程度全球最新排名
  • 2004政务绩效评估:政府门户尚处于发展阶段
  • 甲骨文出资5.15亿美元 意图收购RetekInc
  • 技术并购:帮你突破传统增长的“天花板”
  • ,JavaAdvertisement