《2022年java跳棋源代码 .pdf》由会员分享,可在线阅读,更多相关《2022年java跳棋源代码 .pdf(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、跳棋程序源码下载源代码 作者:俞尚 大小:2.7M 发布日期:2006-09-08 浏览:206 电脑智能升级难度更大,采用隔空跳的规则,这样变化更多一些,可玩性更好,是一个 eclipse 的工程,现在是最新版本:1.修改电脑的智力,难度更高,要战胜电脑?你有 10%的机会2.现在支持多个玩家游戏(将来支持网络游戏)3.下一步设想移植到手机,PPC 上;4.增加声音效果;“我的跳棋”设计说明书,作者:俞尚来自:http:/ 类图:名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 23 页 -先给跳棋整个代码做一个整体介绍,说明每个包,每个类具体作用:1.org.yushang.j
2、umpchess.app AppJumpChess.java实现的漂亮的窗体界面,标题栏和各种按钮,设置玩家个数及类型(人,或是计算机)。2.org.yushang.jumpchess.audio WavePlayer.java主要用于播放游戏中各种声音效果,比较简单。3.org.yushang.jumpchess.image ImageLoader.java主要用于从资源文件中导入各种图片背景,比较简单。4.org.yushang.jumpchess.Interface Animation.java是用于播放动画的超类 AnimationGO.java是用于播放棋子走动的动画名师资料总结-精
3、品资料欢迎下载-名师精心整理-第 2 页,共 23 页 -AnimationSelect.java是用于播放棋子被选中后,“抖动”动画效果 Drawer.java主要是静态地显示棋盘、棋子、下棋位置等图片 JumpChessControl.java是一个很复杂的类,控制玩家下棋顺序、棋子棋盘的显示、动画显示、以及响应玩家的下棋的鼠标事件。5.org.yushang.jumpchess.pkg Chess.java 棋子类,说明棋子的颜色以及索引号等信息。ChessBoard.java棋盘类:索引功能:为棋子和棋盘坐标建立索引关系,根据棋子的可快速检索出该棋子的坐标或根据坐标快速检索出该位置是否
4、有棋子。由于这两项功能在下棋过程中使用频率很高,因此对性能要求也很高。下棋规则:设定了下棋规则,可以是传统的规则,也可以隔空跳规则。这是一个麻烦的工作。涉及数据结构方面的知识,有图的生成和最短路径搜索两个难点。RealChessBoard和 VirtualChessBoard是 ChessBoard派生类:RealChessBoard 中建立了棋子和棋盘坐标建立真正的索引关系。而 VirtualChessBoard是建立在 RealChessBoard 基础之上的,VirtualChessBoard只是保存当已走动的棋子坐标变化情况,这样VirtualChessBoard的数据量很小,提高计算
5、机下棋智能计算速度,这一优点在介绍计算机下棋策略详细讨论。RealChessBoard 和VirtualChessBoard只是创建方式有点区别,使用上没有任何差别,这也是多态性的一个运用。Player.java 玩家类保存了玩家棋子颜色、昵称、敌对玩家,棋子摆放初始区域等信息。同时输出下棋路径,为播放动画作准备。有两个 Play 和 Man 两个派生类,计算机玩家的下棋由org.yushang.jumpchess.strategy控制,而人玩家的下棋要由用户鼠标事件来驱动。这两个类实现这两个不同的功能。6.org.yushang.jumpchess.pub BoardArea.java这把棋
6、盘各玩家所处的位置编号成6 个区域。该类可得到自己区域包含哪些坐标(getAreaPositions)。也可得到和自己相对区域(getOppsiteArea)。Color.java 是棋子颜色类 Director.java棋盘任何一坐标位置(非棋盘边界),在放六个方向上都有相邻的坐标位置,Map.java、Node.java、Nodes.java 三个文件是和数据结构“图”相关的三个类。Position.java棋盘坐标类,有三个功能:设定了棋盘边界、给定一方向可以得到该方向上相邻的坐标、计算与另一坐标的距离。7.org.yushang.jumpchess.strategy 计算机下棋策略主要
7、有以下几个方面:计算出己方所有可能走法选出一个跳得最远(尽快让自己获胜)的棋子和走法。选择一个最可能阻碍对方前行的棋子和走法。尽可能选择可为下一步提供最有利条件的棋子和走法对以上几项做综合分析,得出较好的走法。Analyser.java:策略分析类,运用对各种策略进行综合分析,得出较好的下棋位置。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 23 页 -Strategy.java:策略基类。MainStrategy.java:让棋子跳得最远的策略DoubleStrategy.java:为下一步提供最有利条件的策略OppsiteScore.java:尽可能阻碍对方前行的策略三、界
8、面设计:因为这是一个游戏,应该在界面上下点功夫,早就不是DOS 时代了,应该不会有人喜欢玩一个界面很难看的游戏。同时界面要简洁,功能也不必太多,但基本功能却一定要做好,让用户玩得痛快。下图是界面:界面看起来很复杂其实很简单,棋盘是图片,按钮也是图片,都是贴上去的。这里有两个难点:1.标题栏制作:去掉原有的标题栏:创建 Shell 的时候加上SWT.NO_TRIM 参数就没有边框和标题栏了sShell=new Shell(SWT.NO_TRIM);生成自己的标题栏创建一个 Label,放到 Shell 的(0,0)位置,设置一下图片就可以了Title.jpg是一个图片:名师资料总结-精品资料欢迎
9、下载-名师精心整理-第 4 页,共 23 页 -final ImageLoader imageTitle=new ImageLoader(sShell.getDisplay(),Title.jpg);/ImageLoader是自己创建的类,用于载入 Title.jpg,lblTitle=new Label(parent,SWT.NO_BACKGROUND);lblTitle.setImage(imageTitle.getImage();/设置 Image 属性lblTitle.setBounds(0,0,800,28);/设置位置和大小如何移动 Shell标题栏做好了,问题成于这个Label
10、假标题栏无法移动Shell,怎么办呢?只要当鼠标在lblTitle 上拖动时,程序就要调整Shell 的位置,才能完成原有标题栏的效果。代码图如下:Static boolean mouseDown=false;/鼠标是否按下的标记 Static Point lastMousePoint=null;/按下鼠标时的位置lblTitle.addMouseListener(new MouseAdapter(/按下鼠标时public void mouseDown(MouseEvent e)mouseDown=true;/设置按下标记lastMousePoint=new Point(e.x,e.y);/记
11、录按下的位置/鼠标释放时public void mouseUp(MouseEvent e)mouseDown=false;/清除按下标记);lblTitle.addMouseMoveListener(new MouseMoveListener()public void mouseMove(MouseEvent e)if(mouseDown)/鼠标在 lblTitle 上移动,且鼠标已按下 Point nowMousePoint=new Point(e.x,e.y);/鼠标的新位置Point point=sShell.getLocation();/当前 Shell 的位置/计算 Shell 的新
12、位置名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 23 页 -point.x+=(nowMousePoint.x-lastMousePoint.x);point.y+=(nowMousePoint.y-lastMousePoint.y);sShell.setLocation(point);/设置 Shell 的位置);2.按钮制作:先导入三个按钮图片正常显示的图片Begin1.jpg 鼠标移动到按钮上时显示的图片Begin2.jpg 按下鼠标时显示的图片Begin1.jpg final ImageLoader imageBegin1=new ImageLoader(sShell
13、.getDisplay(),Begin1.jpg);final ImageLoader imageBegin2=new ImageLoader(sShell.getDisplay(),Begin2.jpg);final ImageLoader imageBegin3=new ImageLoader(sShell.getDisplay(),Begin1.jpg);创建按钮 lblBegin=new Label(parent,SWT.NO_BACKGROUND);lblBegin.setImage(imageBegin1.getImage();lblBegin.setBounds(70,40,75
14、,38);为按钮各事件写入代码lblBegin.addMouseTrackListener(new MouseTrackAdapter()public void mouseEnter(MouseEvent e)/鼠标移动到按钮上方lblBegin.setImage(imageBegin2.getImage();public void mouseExit(MouseEvent e)/鼠标从按钮上方移开lblBegin.setImage(imageBegin1.getImage(););lblBegin.addMouseListener(new MouseAdapter()public void
15、mouseDown(MouseEvent e)if(e.button=1)/按下鼠标左键lblBegin.setImage(imageBegin3.getImage();/在这里写入单击事件代码 public void mouseUp(MouseEvent e)if(e.button=1)/释放鼠标左键 lblBegin.setImage(imageBegin2.getImage();名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 23 页 -);4.按钮的功能代码:开始按钮:(BeginButton)setCanvas.setVisible(true);/显示玩家设置界面退出按
16、钮:(ExitButton)System.exit(0);/退出游戏关闭按钮:(CloseButton)System.exit(0);/退出游戏确定按钮:(OKButton)Initialize();/初始化玩家,同时调用JumpChessControl.Initialize();取消按钮:(CancelButton)setCanvas.setVisible(false);/关闭玩家设置界面由于专门有一个类来导入图片(ImageLoader),好处是界面换肤很容易做到,把图片替换就可以了。如何显示棋盘棋子,坐标转换,棋子动画,声音等遇到什么问题(不能退出,尝试解办法失则)四、跳棋算法:1.棋盘
17、坐标定义名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 23 页 -坐标定义如图所示,红色数字标识棋盘的区域.2.边界限制如图所示,当X 坐标为 1 时,Y 的坐标只能为5,当 X 坐标为 2 时,Y 的坐标可以5 或 6。于是我们建立一个数组:final static private int pos=5,5,/X坐标为 1,Y的上限是 5,下限是 5 5,6,/X坐标为 2,Y的上限是 5,下限是 6 5,7,/X坐标为 3,Y的上限是 5,下限是 7 5,8,/X坐标为 4,Y的上限是 5,下限是 8 1,13,/X坐标为 5,Y 的上限是 1,下限是 13 2,13,/6
18、3,13,/7 4,13,/8 名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 23 页 -5,13,/9 5,14,/10 5,15,/11 5,16,/12 5,17,/13 10,13,/14 11,13,/15 12,13,/16 13,13,/17;在 Position 类中 IsLegalPosition 函数可以确定一个坐标是否合法 public static boolean IsLegalPosition(int x,int y)if(x 17)return false;if(y posx-11)return false;return true;3.棋盘类(Che
19、ssBoard)中棋子和坐标的索引关系棋盘中所有Chess 集合 private Chess chesses=null;/所有棋子对象都保存这个数组当中下面函数可以根据索引号返回棋子对象 public Chess getChess(int index)return chessesindex;棋子和坐标的对应关系 private Position chessesPosition=null;/所有棋子坐标都保存在这个数组当中下面函数可以根据棋子对象或棋子索引号返回坐标 public Position getPosition(Chess chess)return chessesPositionche
20、ss.getindex();public Position getPosition(int index)return chessesPositionindex;坐标和棋子的对应关系 private Chess chessesIndex=new Chess1717;/数组保存了1717 个棋子对象指针名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 23 页 -下面函数可以根据棋子坐标返回该位置上的棋子,如果没有棋子返回Null public Chess getChess(Position position)if(position=null)return null;return ch
21、essesIndexposition.getx()-1position.gety()-1;4.下棋规则的算法坐标的六个方向及相邻坐标的关系在任一个坐标位置上(非边界位置)有相邻六个坐标位置,我们称六个方向分别为:UpLeft、UpRight、Left、Right、DownLeft、DownRight。相邻坐标的关系如下图:下面的代码可以得到相邻坐标:(在Position 类实现的)public Position getJoint(Director director)int x=0;int y=0;if(director=Director.UpLeft)x=this.x;y=this.y+1;e
22、lse if(director=Director.UpRight)x=this.x+1;y=this.y+1;else if(director=Director.Left)x=this.x-1;y=this.y;else if(director=Director.Right)x=this.x+1;y=this.y;else if(director=Director.DownLeft)x=this.x-1;y=this.y-1;else if(director=Director.DownRight)x=this.x;名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 23 页 -y=
23、this.y-1;if(IsLegalPosition(x,y)/判断坐标是出边界了 return new Position(x,y);else return null;棋子跳动算法该算法在 ChessBoard.CanJumpTo函数中实现找出一个棋子所有可走位置,并建成数据结构“图”的形式这个算法有点象图的广度优先遍历算法。文字说明如下:1把当前棋子坐标加入“图”中。2从当前棋子位置出发,从六个方向查找棋子可跳的位置,3如果第 2 步找到坐标没有加入“图”中,就把这些坐标加入“图”中去。4从第 3 步刚加入“图”中的坐标出发,继续执行第2 步。一直到没有坐标加入“图”中为止。最短路径搜索当
24、用户指定下棋位置以后,还要计算出棋子从当前位置到目标位置的最短路径,为游戏的播放棋子走动动画作准备。这个算法还是有点象图的广度优先遍历算法,文字说明如下:1把所有坐标的“权值”设为 1 2把当前棋子坐标的“权值”设为 0。3从当前棋子位置出发,查找棋子可跳的位置。3如果第 3 步找到坐标没有“权值”为 1,就把这些坐标的“权值”在上一坐标的基础上加1。4从第 4 步刚设定“权值”的坐标出发,继续执行第2 步。一直到所有坐标都设定“权值”为止。5从目标位置开始,倒退着开始查找,每次查找的位置应该是“权值”比当前位置减小1 的坐标。一直找到起始位置。这样就找到最短路径了。这些的都是数据结构基础知识
25、,有点抽象,只要理解加想象就没有问题了。哦,上次“平安”考试中有一个题目:什么是前序遍厉,什么是后序遍厉,我真的记不住。数据结构的知识能理解能运用,考试却不能得分,冤呀。5.计算机下棋策略这是最难设计的部分,人与计算机的思维方式完全不同,如何把人的下棋思路表示计算机可运算的数据结构,这是比较困难的,要不然人工智能这么多年一直没有突破性进展呢?两坐标间距离计算方法没有写完五、跳棋控制类所有的工具都做好了,现在要把它组装起来,做好了我们就可以完工了,这个组装没有UML设计,写得有点乱,但是思路是很清晰的,下面画出流程:名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 23 页 -另外
26、需要说明的是:由于程序是事件驱动的,而且动画显示用记时器实现,在编码上实现上面流程图的思路,还是比较困难的。六、改进计划1.支持网络对战(坐标旋转的问题)2.移植到手机PALM、PPC上3.实现换肤功能,用QQ 的图片总是不大好吧。名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 23 页 -4.提高计算机智能,目前的只能达到QQ 中“高级棋师水平”,我在 QQ 中胜率是 70%。七、总结我写跳棋游戏,不是为了玩游戏,只想从中体验编程的快乐。另一方面也看看自己学习能力到底怎样。因为我这是第一次用eclipse 做开发,第一次用 Java 写程序,第一次用UML 做设计。花了十来天
27、时间边学边做居然做出来,还比较满意。虽然大大小小项目做过不少,但我从来没有在算法上觉得有难度,跳棋算法是比较复杂的。做完“我的跳棋”在以下几个方面得到锻炼:学习 Java 和 eclipse,十天时间基本掌握一门全新编程工具应该没有问题。我对一直很欣赏Java,其中有很多先进的编程理念,比如 GC,完善的 SDK,其中源码写得十分漂亮。Eclipse 真是优秀的IDE 是我目前觉得最好的一个编程环境。VB,VC,Delphi 比起它来是垃圾了。用了一点 UML 方面的知识,感觉编程难度不在于某一个函数该怎么写,而在于一个类,一个系统接口如何设计,每个类的功能如何分配,把它们合理的组合关联,从而
28、实现复杂的功能。另外也决定写一个文档,也该加强这方面的能力。世界上90%的代码都不会被作者以外的人阅读,要与别人交流,表达自己的思路只能借助于文档。中国决不缺少程序员,缺少的文档员。1.package org.yushang.jumpchess.app;2.3.import org.eclipse.swt.SWT;4.import org.eclipse.swt.events.MouseAdapter;5.import org.eclipse.swt.events.MouseEvent;6.import org.eclipse.swt.events.MouseMoveListener;7.im
29、port org.eclipse.swt.events.MouseTrackAdapter;8.import org.eclipse.swt.graphics.Color;9.import org.eclipse.swt.graphics.Point;10.import org.eclipse.swt.widgets.Composite;11.import org.eclipse.swt.widgets.Label;12.import org.eclipse.swt.widgets.Listener;13.import org.eclipse.swt.widgets.MessageBox;14
30、.import org.eclipse.swt.widgets.Shell;15.import org.eclipse.swt.widgets.Display;16.import org.eclipse.swt.widgets.Text;17.import org.yushang.jumpchess.Interface.*;18.import org.yushang.jumpchess.image.ImageLoader;19.import org.eclipse.swt.widgets.Canvas;20.21.publicclass AppJumpChess 22.23.private S
31、hell sShell=null;/jve:decl-index=0:visual-constraint=10,10 24.25.private JumpChessControl jumpChessControl=null;26.名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 23 页 -27.private Canvas canvas=null;28.private Label lblClose=null;29.private Label lblTitle=null;30.private Label lblBegin=null;31.private Label lblExit
32、=null;32.33.private Canvas setCanvas=null;34.private Label lblOK=null;35.private Label lblCancel=null;36.37.private Label lblType=new Label6;38.private Text txt=new Text6;39.40.privateboolean mouseDown=false;41.private Point lastMousePoint=null;42.43./*44.*This method initializes canvas 45.*46.*/47.
33、privatevoid createCanvas()48.canvas=new Canvas(sShell,SWT.NO_BACKGROUND);49.canvas.setBounds(new org.eclipse.swt.graphics.Rectangle(0,0,800,600);50.51.52.privatevoid createClose(Composite parent)53.final ImageLoader imageClose1=new ImageLoader(sShell.getDisplay(),Close1.jpg);54.final ImageLoader ima
34、geClose2=new ImageLoader(sShell.getDisplay(),Close2.jpg);55.final ImageLoader imageClose3=new ImageLoader(sShell.getDisplay(),Close3.jpg);56.57.lblClose=new Label(parent,SWT.NO_BACKGROUND);58.59.lblClose.addMouseListener(new MouseAdapter()60.publicvoid mouseDown(MouseEvent e)61.if (e.button=1)62.lbl
35、Close.setImage(imageClose3.getImage();63.64.65.名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 23 页 -66.publicvoid mouseUp(MouseEvent e)67.if (e.button=1)68.lblClose.setImage(imageClose2.getImage();69.sShell.dispose();70.71.72.);73.74.lblClose.addMouseTrackListener(new MouseTrackAdapter()75.publicvoid mouseEnter(Mo
36、useEvent e)76.lblClose.setImage(imageClose2.getImage();77.78.publicvoid mouseExit(MouseEvent e)79.lblClose.setImage(imageClose1.getImage();80.81.);82.83.lblClose.setImage(imageClose1.getImage();84.lblClose.setBounds(765,4,26,20);85.86.87.privatevoid createTitle(Composite parent)88.final ImageLoader
37、imageTitle=new ImageLoader(sShell.getDisplay(),Title.jpg);89.lblTitle=new Label(parent,SWT.NO_BACKGROUND);90.lblTitle.addMouseMoveListener(new MouseMoveListener()91.publicvoid mouseMove(MouseEvent e)92.if (mouseDown)93.Point nowMousePoint=new Point(e.x,e.y);94.if (lastMousePoint.equals(nowMousePoint
38、)95.return;96.97.98.Point point=sShell.getLocation();99.point.x+=(nowMousePoint.x-lastMousePoint.x);100.point.y+=(nowMousePoint.y-lastMousePoint.y);101.sShell.setLocation(point);102.103.104.);105.106.lblTitle.addMouseListener(new MouseAdapter()107.publicvoid mouseDown(MouseEvent e)108.mouseDown=true
39、;名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 23 页 -109.lastMousePoint=new Point(e.x,e.y);110.111.publicvoid mouseUp(MouseEvent e)112.mouseDown=false;113.114.);115.lblTitle.setImage(imageTitle.getImage();116.lblTitle.setBounds(0,0,800,28);117.118.119.privatevoid createBeginButton(Composite parent)120.final Image
40、Loader imageBegin1=new ImageLoader(sShell.getDisplay(),Begin1.jpg);121.final ImageLoader imageBegin2=new ImageLoader(sShell.getDisplay(),Begin2.jpg);122.final ImageLoader imageBegin3=new ImageLoader(sShell.getDisplay(),Begin3.jpg);123.lblBegin=new Label(parent,SWT.NO_BACKGROUND);124.125.lblBegin.add
41、MouseListener(new MouseAdapter()126.publicvoid mouseDown(MouseEvent e)127.if (e.button=1)128.lblBegin.setImage(imageBegin3.getImage();129.130.131.publicvoid mouseUp(MouseEvent e)132.if (e.button=1)133.lblBegin.setImage(imageBegin2.getImage();134.setCanvas.setVisible(true);135.136.137.138.);139.140.l
42、blBegin.addMouseTrackListener(new MouseTrackAdapter()141.publicvoid mouseEnter(MouseEvent e)142.lblBegin.setImage(imageBegin2.getImage();143.144.publicvoid mouseExit(MouseEvent e)145.lblBegin.setImage(imageBegin1.getImage();146.147.);148.名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 23 页 -149.lblBegin.setImage(im
43、ageBegin1.getImage();150.lblBegin.setBounds(620,540,75,38);151.152.153.privatevoid createExitButton(Composite parent)154.final ImageLoader imageExit1=new ImageLoader(sShell.getDisplay(),Exit1.jpg);155.final ImageLoader imageExit2=new ImageLoader(sShell.getDisplay(),Exit2.jpg);156.final ImageLoader i
44、mageExit3=new ImageLoader(sShell.getDisplay(),Exit3.jpg);157.lblExit=new Label(parent,SWT.NO_BACKGROUND);158.159.lblExit.addMouseListener(new MouseAdapter()160.publicvoid mouseDown(MouseEvent e)161.if (e.button=1)162.lblExit.setImage(imageExit3.getImage();163.164.if (e.button=3)165.jumpChessControl.
45、Debug();166.167.168.publicvoid mouseUp(MouseEvent e)169.if (e.button=1)170.lblExit.setImage(imageExit2.getImage();171.sShell.dispose();172.173.174.);175.176.lblExit.addMouseTrackListener(new MouseTrackAdapter()177.publicvoid mouseEnter(MouseEvent e)178.lblExit.setImage(imageExit2.getImage();179.180.
46、publicvoid mouseExit(MouseEvent e)181.lblExit.setImage(imageExit1.getImage();182.183.);184.lblExit.setImage(imageExit1.getImage();185.lblExit.setBounds(702,540,75,38);186.187.188.privatevoid createLable(Composite parent)名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 23 页 -189./关闭按扭190.createClose(parent);191./标题栏1
47、92.createTitle(parent);193./开始按钮194.createBeginButton(parent);195./退出按钮196.createExitButton(parent);197.198.199.privatevoid createSetCanvas(Composite parent)200.final ImageLoader imageInit=new ImageLoader(sShell.getDisplay(),init.jpg);201.setCanvas=new Canvas(parent,SWT.NO_BACKGROUND);202.setCanvas.
48、setBounds(new org.eclipse.swt.graphics.Rectangle(167,144,266,312);203.setCanvas.addListener(SWT.Paint,new Listener()204.publicvoid handleEvent(org.eclipse.swt.widgets.Event event)205./Rectangle rect=canvas.getClientArea();206./Image buffer=new Image(canvas.getDisplay(),rect);207./GC gc=new GC(buffer
49、);208.209.imageInit.Draw(event.gc,0,0,0);210.211./gc.dispose();212./event.gc.drawImage(buffer,0,0);213./buffer.dispose();214.215.);216.setCanvas.setVisible(false);217.218.219.privatevoid createSetLabel(Composite parent)220.createOKButton(parent);221.createCancelButton(parent);222.223.for (int i=0;i
50、6;i+)224.createTxt(parent,65,57+34*i,i);225.createType(parent,201,57+34*i,i);226.227.228.229.privatevoid createCancelButton(Composite parent)名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 23 页 -230.final ImageLoader imageCancel1=new ImageLoader(sShell.getDisplay(),Cancel1.jpg);231.final ImageLoader imageCancel2=ne