版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java程序设计实训报告俄罗斯方块一、 实训任务及要求:1.1、实训任务1.运用Java实现小游戏的开发2.了解Java开发项目的流程3.掌握规划,设计,开发,测试的能力1.2、实训要求熟悉java的编程环境J2SDK,掌握Application 和Applet的程序结构,并能熟练编写和调试两类程序。熟练使用各种常用类库。理解JDK的事件处理机制,掌握java.awt 、javax.swing,javax.swing.event中的GUI标准组件的用法,学会合理运用布局策略、综合运用各种界面元素,编程构造满足应用需要的图形工作界面。二、需求分析:1.课程设计的目的和意义俄罗斯方块游戏是一个经典
2、的小游戏,由于它简单有趣,因而得到了广泛的流行,男女老幼都适合。而俄罗斯方块游戏的设计工作复杂且富有挑战性,它包含的内容多,涉及的知识广泛,与图形界面联系较大,包括界面的显示与更新、数据收集等,在设计的过程中,必将运用到各方面的知识,这对于visualbasi语言设计者而言,是个很好的锻炼机会。2.系统功能设计1. 本系统主要设计以下几种功能2. 1、游戏难度选择功能3. 游戏难度选择界面设置在程序运行开始时,一共有九种难度供玩家选择,每选一级难度,都会相应地显示出代表该难度的图片。开始时不设置任何默认的难度,如果玩家不选难度直接按“Enter”进入,将会弹出提示框,提示其先选难度再进入。4.
3、 2、方块下落、变形功能5. 在整个俄罗斯方块游戏中,方块的设计是核心。这里设计了一个方块类:Square( ),用来生成方块以及实现块的左移、右移、向下、变形、重画、同步显示、初始化新块等。6. 3、自动升级功能7. 当分数累积到一定大小时,系统将自动为玩家提高难度。这里设置了每消除10行方块,就增加一级难度。当难度增加的时候,方块会相应地改变颜色,以作为对玩家的提示。8. 4、游戏音乐功能9. 游戏开始音乐就自动播放,游戏暂停与结束时音乐相应消除。10. 5、获取帮助功能11. 这里设置了一个类,用来显示帮助,按F1键就能弹出窗口,显示游戏规则。3.系统功能设计分析1. 俄罗斯方块游戏根据
4、功能的不同,设置了如下12个类:Square, Command, GameArea, GameSetting, GameOver, Help, ImagePanel, JieMian, MyPanel, MyTimer, PlayMidi, WinListener,每个类的描述如下:2.1、Square,方块类。这个类中定义了生成方块的方法,用二维数组int pattern,存放7种方块的四种状态。在构造方法中以随机的形式生成方块,同时提供了以下几种方法:reset( ),leftTurn( ),leftMove( ),rightMove( ),fallDown( ),assertValid(
5、int t,int s,int row,int col),dispBlock(int s)。分别实现方块的重画、翻转、左移、右移、下落、同步显示等功能。2.2、Command,处理控制类。这是一个实现ActionListener接口的类,主要处理点击按钮事件。类中定义了三个int型变量:button_play,button_quit,button_pause,和一个boolean型的变量:pause_resume,并赋值。在GameArea类中通过事件响应,在按钮执行方法中调用其值,使用switch语句,根据不同按钮不同的值,来响应不同的事件。2.3、GameArea,游戏界面类。GameAr
6、ea继承了JFrame,是俄罗斯方块的主要游戏界面。这个类定义了GameSetting类的gameScr对象和ImagePanel类的imagepanel对象作为游戏区域面板和控制区域面板。在游戏区域,主要是根据相应格子的设置标志来显示相应的图形图片,这样就实现了俄罗斯方块的实时显示。2.4、GameSetting, 游戏画布类。这个类生成的对象将作为游戏界面的方块下落区域,画布的设置为15行10列,当中的方格边长为30,类中还定义了一个二维数组int scrArr作为屏幕数组,表示每一个方格。游戏区域中每一个方格是否存在游戏方块是由该方格的值来决定的,如果该方格的值为1,则表示该方格中存在游
7、戏方块;如果该方格中的值为0,则表示该方格中不存在游戏方块,因此二维数组用于记录游戏区域中每个小方格的值。此外,类中还定义了画方块的方法,根据不同的难度画出不同颜色的方块。单击Play按钮时,系统调用initScr( )方法,初始化屏幕,将屏幕数组清零。当满足满行删除的条件时,系统调用deleteFullLine( )方法,进行删行加分,而且每删除十行,难度自动增加一级,方块颜色改变,并在难度显示框中相应显示。2.5、GameOver,游戏结束弹出提示框类。当游戏结束时,系统弹出提示,包括玩家分数以及询问玩家要继续游戏还是退出。2.6、Help,帮助类。在游戏界面,按F1键,弹出提示窗口,获取
8、帮助。2.7、ImagePanel,背景图片类。这个类继承了JPanel类,用来作为游戏界面中控制区域的容器,并添加图片。2.8、JieMian,主界面类。这个类继承了JPanel类,作为游戏的第一个界面,也是难度选择界面。定义了9个单选按钮,当玩家未选任何难度就按Enter时,系统会弹出一个提示框,提示玩家先选难度再进入。2.9、MyPanel,重写MyPanel类,使Panel的四周留空间。2.10、MyTimer,定时线程类。类中定义了一个run()方法,用sleep()函数实现方块下落的快慢,即调节难度。2.11、PlayMidi,添加音乐类。在游戏过程中添加背景音乐。2.12、Win
9、Listener,关闭窗口类。4.主要类的UML类图表示1. Square2. int pattern3. int SquareType4. int SquareState5. int blockState6. int row,col7. GameSetting scr8. + void reset()9. + void leftTurn()10. + void leftMove()11. + void rightMove()12. + boolean fallDown()13. boolean assertValid(int t,int s,int row,int col)14. + syn
10、chronized void dispBlock(int s)5.(Square类的UML类图表示)15. GameSetting16. int unitSize17. int rowNum18. int columnNum19. int maxAllowRowNum20. int SquareInitRo21. int SquareInitCol22. int scrArr23. Square b24. initScr()25. + void paint(Graphics g)26. + void drawUnit(int row,int col,int type)27. + Square
11、getBlock()28. + int getScrArrXY(int row,int col)29. + int getInitRow()30. + int getInitCol()31. void deleteFullLine()32. boolean isGameEnd()33. + void keyPressed(KeyEvent e)三、详细设计:1模型层设计1) 图形的产生通过图形工厂类ShapeFactory的getShape(ShapeListener listener)方法随机产生方块的某种状态,这里运用了工厂设计模式,这种设计模式是为了实现高内聚低耦合而存在的,这种设计模式
12、的通俗解释就是:你想要一个产品,你需要让工厂给你生产一个,你要告诉工厂你要生产什么产品,就把你需要生产的这个产品当做参数传给工厂类的生产产品的方法,然后根据你传进来的产品,而决定工厂人生产什么产品,产生出来产品后,最后要返回您要的这个东西。7654321随机产生一个数随机数一字形Z字形反Z形7字形反7形倒T形田字型2) 图形数据结购定义一个4x4方阵,共16个小格。用“0”和“1”来表示每个方格是绘制还是空白,由此可以组合出多种图形,如图所示:其中图一表示为0,0,0,0, 1,1,1,1 , 0,0,0,0, 0,0,0,0其中图二表示为0,0,0,0, 0,1,1,0 , 0,1,1,0,
13、 0,0,0,0其中图三表示为0,0,0,0, 0,1,0,0 , 0,1,1,1, 0,0,0,0其中图四表示为0,0,0,0, 0,1,0,1 , 0,1,1,0, 0,0,1,0方块的旋转是通过绘制4个方向的方块,在不同旋转角度显示不同方向的方块来完成的。所以程序要控制方块的旋转方向,只要控制显示哪副图就可以了。本游戏是用一个三维数组int shapes = new int;作为存储方块的数据结构来保存方块的28种状态的。代码如下:public final static int STYLES = / 共28种状态 0x0f00, 0x4444, 0x0f00, 0x4444 , / 长条
14、型的四种状态 0x04e0, 0x0464, 0x00e4, 0x04c4 , / 'T'型的四种状态 0x4620, 0x6c00, 0x4620, 0x6c00 , / 反'Z'型的四种状态 0x2640, 0xc600, 0x2640, 0xc600 , / 'Z'型的四种状态 0x6220, 0x1700, 0x2230, 0x0740 , / '7'型的四种状态 0x6440, 0x0e20, 0x44c0, 0x8e00 , / 反'7'型的四种状态 0x0660, 0x0660, 0x0660, 0x
15、0660 , / 方块的四种状态;/* * 构造函数 */public RussiaBlock(int y, int x, int level, int style) this.y = y;this.x = x;this.level = level;moving = true;pausing = false;this.style = style;canvas = GameCanvas.getCanvasInstance();boxes = new RussiaBoxROWSCOLS;int key = 0x8000;for (int i = 0; i < boxes.length; i+
16、)for (int j = 0; j < boxesi.length; j+) boolean isColor = (style & key) != 0);boxesij = new RussiaBox(isColor);key >>= 1;display();以下这段代码是3个子模块的代码,通过实例化按钮,标签,文本域,图形面板等,用add方法进行添加等,具体解释在代码中有体现public ControlPanel(final RussiaBlocksGame game) this.game = game;/* * 图形界面部分 */setLayout(new Gr
17、idLayout(3, 1, 0, 4);/ 设置控制面板布局方式为网格状布局tipBlockPanel = new TipBlockPanel();/ 新建一个图形界面面板中的子面板tipPanel = new JPanel(new BorderLayout();/ 设置为位置布局方式tipPanel.add(new JLabel("Next Block:"), BorderLayout.NORTH);/ 添加新的标签在子面板中,设置布局在北部tipPanel.add(tipBlockPanel, BorderLayout.CENTER);/ 添加tipblockpane
18、l面板在子面板中tipPanel.setBorder(border);/ 显示统计面板模块InfoPanel = new JPanel(new GridLayout(4, 1, 0, 0);/ 新建一个显示面板/ 设置4行1列的网格状布局levelField = new JTextField("" + RussiaBlocksGame.DEFAULT_LEVEL);levelField.setEditable(false);scoreField = new JTextField("0");/ 新建一个得分区域,并设置其值为0scoreField.setE
19、ditable(false);/ 文本区域不能被编辑InfoPanel.add(new JLabel("当前等级:");/ 信息面板添加新的标签 内容为“当前等级”InfoPanel.add(levelField);/ 信息面板添加等级区域InfoPanel.add(new JLabel("当前分数:");/ 信息面板添加新的标签 内容为“当前分数”InfoPanel.add(scoreField);/ 信息面板添加 得分区域InfoPanel.setBorder(border);/ 显示功能按钮面板模块buttonPanel = new JPanel(
20、new GridLayout(3, 1, 0, 0);/ 新建一个按钮面板/ 设置布局方式为网格状布局/ 为3行1列playButton = new JButton("开始");/ 添加开始按钮pauseButton = new JButton("暂停");/ 添加暂停按钮stopButton = new JButton("停止");/ 添加停止按钮turnHarderButton = new JButton("难一级");/ 添加难一级按钮 按钮功能未实现turnEasilyButton = new JButto
21、n("简单一级");/ 添加简单一级按钮 按钮功能未实现/ 按钮面板添加功能按钮buttonPanel.add(playButton);/ 按钮面板添加开始按钮buttonPanel.add(pauseButton);/ 按钮面板添加暂停按钮buttonPanel.add(stopButton);/ 按钮面板添加 停止按钮/ buttonPanel.add(turnHarderButton); 添加难一级按钮 该功能未实现/ buttonPanel.add(turnEasilyButton); 添加简单一级按钮 该功能未实现buttonPanel.setBorder(bor
22、der);addKeyListener(new ControlKeyListener();/ 添加键盘监听事件add(tipPanel);add(InfoPanel);add(buttonPanel);四、运行调试与分析讨论: 4.1游戏演示4.1游戏界面演示,如7 图74.2开始和结束控制菜单,如图8 图84.3游戏窗口控制菜单,如图9 图94.2系统测试4.2.1快捷键测试1.键盘按“Ctrl+N”效果:游戏开始结果:正常2. 键盘按“Ctrl+E”效果:游戏退出结果:正常4.2.2右侧快捷按钮测试1.点击“开始” 按钮效果:游戏开始结果:正常2.点击“暂停” 按钮效果:游戏暂停结果:正常
23、3.点击“停止” 按钮效果:游戏重置结果正常4.2.3界面菜单选项的功能测试1.“游戏”菜单的测试点击“游戏” à “新游戏”效果:游戏正常开始结果:正常2.点击“游戏”à“Exit”效果:游戏退出结果:正常3. “窗口样式”菜单测试1.点击“窗口样式”à“Windows”效果:切换为Wingdows模式结果:正常2.点击“窗口样式”à“Motif”效果:切换为Motif样式结果:正常3. 点击“窗口样式”à“Mentel”效果:切换为Mentel模式结果:正常 4.2.4 按键事件的功能测试 (1) 方块移动测试 游戏过程中,点击“左、右、下
24、”方向键输出:方块正常移动,不会移出边界结果:正常 (2) 方块反转测试 游戏过程中,点击向上方向键输出:方块无边界和障碍物阻挡的情况下可反转结果:正常4.2.5方块堆砌与消行测试(1) 当方块下落到最底面或与障碍物接触时输出:方块成功堆砌在底部结果:正常 (2) 当出现满行现象时输出:所有满行被消除,方块依次下移结果:正常4.2.6 测试结果分析 经过测试,本游戏实现了基本的功能,不过整体功能还不是很强大,作为开发的第一个版本,游戏在很多方面还需要进一步完善。五、设计体会与小结:课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的
25、具体训练和考察过程. 回顾起课程设计,至今我仍感慨颇多,的确,在这一星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。通过课程设计
26、之后,把以前所学过的知识重新温故。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的指导下,终于迎刃而解。在此我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢六、附录:1、小组成员及分工情况系 (部): 信息工程系 专业班级: 软件(1)班 学生姓名: 陈学烽 学 号: 1011302101012 完成日期: 2011年12月28日 2、源代码ControlPanel.java/* *虚拟的单个方格类,控制方格的颜色 */class RussiaBox implements Cloneable private boolean isColor;publ
27、ic RussiaBox(boolean isColor) this.isColor = isColor;/* * 设置颜色 */public void setColor(boolean isColor) this.isColor = isColor;/* * 返回颜色 */public boolean isColorBox() return isColor;public Object clone() Object o = null;try o = super.clone(); catch (CloneNotSupportedException e) e.printStackTrace();r
28、eturn o;GameCanvas.java/游戏中方块显示的画布类import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;class GameCanvas extends JPanel private RussiaBox boxes;/定义小方块private int rows = 20, cols = 12;/定义20行 12列private static GameCanvas canvas = null;private int boxWidth, boxHeig
29、ht;/ 默认为零需要调用fanning函数设置private Color blockColor = Color.RED, bgColor = Color.LIGHT_GRAY;/定义方块色为红色,背景为浅灰色private EtchedBorder border = new EtchedBorder(EtchedBorder.RAISED,Color.WHITE, new Color(148, 145, 140);/边框颜色白色/* * 采用单件模式,构造函数私有 */private GameCanvas() boxes = new RussiaBoxrowscols;for (int i
30、= 0; i < boxes.length; i+)for (int j = 0; j < boxesi.length; j+)boxesij = new RussiaBox(false);setBorder(border);/* * 获得GameCanvas实例 */public static GameCanvas getCanvasInstance() if (canvas = null)canvas = new GameCanvas();return canvas;/* * 设置画布的背景色 */public void setBgColor(Color bgColor) th
31、is.bgColor = bgColor;/* * 获得画布的背景色 */public Color getBgColor() return bgColor;/* * 设置方块的颜色 */public void setBlockColor(Color blockColor) this.blockColor = blockColor;/* * 方块的颜色 */public Color getBlockColor() return blockColor;/* * 设置画布中方块的行数 */public void setRows(int rows) this.rows = rows;/* * 得到画布
32、中方块的行数 */public int getRows() return rows;/* * 设置画布中方块的列数 */public void setCols(int cols) this.cols = cols;/* * 得到画布中方块的列数 */public int getCols() return cols;/* * 得到row行,col列的方格 */public RussiaBox getBox(int row, int col) if (row >= 0 && row < rows && col >= 0 && col
33、 < cols)return boxesrowcol;elsereturn null;/* * 在画布中绘制方块 */public void paintComponent(Graphics g) super.paintComponent(g);fanning();for (int i = 0; i < boxes.length; i+)for (int j = 0; j < boxesi.length; j+) Color color = boxesij.isColorBox() ? blockColor : bgColor;g.setColor(color);g.fill3
34、DRect(j * boxWidth, i * boxHeight, boxWidth, boxHeight,true);/* * 清除第row行 */public void removeLine(int row) for (int i = row; i > 0; i-)for (int j = 0; j < cols; j+) boxesij = (RussiaBox) boxesi - 1j.clone();/* * 重置 为初始时的状态 */public void reset() for (int i = 0; i < boxes.length; i+)for (int
35、 j = 0; j < boxesi.length; j+) boxesij.setColor(false);repaint();/* * 根据窗体的大小自动调整方格的大小 */public void fanning() boxWidth = getSize().width / cols;boxHeight = getSize().height / rows;RussiaBlock.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;/* * 方块类
36、*/class RussiaBlock extends Thread private int style, y, x, level;private boolean moving, pausing;private RussiaBox boxes;private GameCanvas canvas;public final static int ROWS = 4;public final static int COLS = 4;public final static int BLOCK_KIND_NUMBER = 7;public final static int BLOCK_STATUS_NUM
37、BER = 4;public final static int BETWEEN_LEVELS_TIME = 50;public final static int LEVEL_FLATNESS_GENE = 3;/* * 方块的所有风格及其不同的状态 */public final static int STYLES = / 共28种状态 0x0f00, 0x4444, 0x0f00, 0x4444 , / 长条型的四种状态 0x04e0, 0x0464, 0x00e4, 0x04c4 , / 'T'型的四种状态 0x4620, 0x6c00, 0x4620, 0x6c00 , /
38、 反'Z'型的四种状态 0x2640, 0xc600, 0x2640, 0xc600 , / 'Z'型的四种状态 0x6220, 0x1700, 0x2230, 0x0740 , / '7'型的四种状态 0x6440, 0x0e20, 0x44c0, 0x8e00 , / 反'7'型的四种状态 0x0660, 0x0660, 0x0660, 0x0660 , / 方块的四种状态;/* * 构造函数 */public RussiaBlock(int y, int x, int level, int style) this.y = y
39、;this.x = x;this.level = level;moving = true;pausing = false;this.style = style;canvas = GameCanvas.getCanvasInstance();boxes = new RussiaBoxROWSCOLS;int key = 0x8000;for (int i = 0; i < boxes.length; i+)for (int j = 0; j < boxesi.length; j+) boolean isColor = (style & key) != 0);boxesij =
40、 new RussiaBox(isColor);key >>= 1;display();/* * 线程的 run方法控制放块的下落及下落速度 */public void run() while (moving) /方块移动循环try sleep(BETWEEN_LEVELS_TIME* (RussiaBlocksGame.MAX_LEVEL - level + LEVEL_FLATNESS_GENE);if (!pausing)moving = (moveTo(y + 1, x) && moving); catch (InterruptedException e)
41、e.printStackTrace();/* * 暂停移动 */public void pauseMove() pausing = true;/* * 从暂停状态恢复 */public void resumeMove() pausing = false;/* * 停止移动 */public void stopMove() moving = false;/* * 向左移一格 */public void moveLeft() moveTo(y, x - 1);/* * 向右移一格 */public void moveRight() moveTo(y, x + 1);/* * 向下移一格,返回与其他
42、几个不同,为了一键到底 */public boolean moveDown() if (moveTo(y + 1, x)return true;elsereturn false;/* * 移到newRow,newCol位置 */public synchronized boolean moveTo(int newRow, int newCol) / erase();/必须在判断前进行擦除,否则isMoveable将产生错误行为if (!moving | !isMoveable(newRow, newCol) display();return false;y = newRow;/y为新的行x =
43、newCol;/x为新的列display();canvas.repaint();/俄罗斯方块重画return true;/* * 判断能否移到newRow,newCol位置 */private boolean isMoveable(int newRow, int newCol) erase();for (int i = 0; i < boxes.length; i+)for (int j = 0; j < boxesi.length; j+) if (boxesij.isColorBox() RussiaBox box = canvas.getBox(newRow + i, new
44、Col + j);if (box = null | box.isColorBox()return false;return true;/* * 通过旋转变为下一种状态 */public void turnNext() int newStyle = 0;for (int i = 0; i < STYLES.length; i+)for (int j = 0; j < STYLESi.length; j+) if (style = STYLESij) newStyle = STYLESi(j + 1) % BLOCK_STATUS_NUMBER;break;turnTo(newStyl
45、e);/* * 通过旋转变能否变为newStyle状态 */private synchronized boolean turnTo(int newStyle) / erase();/擦除之后在判断isTurnNextAbleif (!moving | !isTurnable(newStyle) display();return false;style = newStyle;int key = 0x8000;for (int i = 0; i < boxes.length; i+)for (int j = 0; j < boxesi.length; j+) boolean isCol
46、or = (key & style) != 0);boxesij.setColor(isColor);key >>= 1;display();canvas.repaint();return true;/* * 判断通过旋转能否变为下一种状态 */private boolean isTurnable(int newStyle) erase();int key = 0x8000;for (int i = 0; i < boxes.length; i+)for (int j = 0; j < boxesi.length; j+) if (key & newSt
47、yle) != 0) RussiaBox box = canvas.getBox(y + i, x + j);if (box = null | box.isColorBox()return false;key >>= 1;return true;/* * 擦除当前方块(只是设置isColor属性,颜色并没有清除,为了判断能否移动之用) */private void erase() for (int i = 0; i < boxes.length; i+)for (int j = 0; j < boxesi.length; j+) if (boxesij.isColorB
48、ox() RussiaBox box = canvas.getBox(y + i, x + j);if (box != null)box.setColor(false);/* * 显示当前方块(其实只是设置Color属性,在调用repaint方法时才真正显示) */private void display() for (int i = 0; i < boxes.length; i+)for (int j = 0; j < boxesi.length; j+) if (boxesij.isColorBox() RussiaBox box = canvas.getBox(y + i,
49、x + j);if (box != null)box.setColor(true);RussiaBlocksGame.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;class RussiaBlocksGame extends JFrame public final static int PER_LINE_SCORE = 100;/ 消去一行得分public final static int PER_LEVEL_SCORE = PER_LINE_SCORE * 20;/ 升一级需要的分数public fina
50、l static int DEFAULT_LEVEL = 1;/ 默认级别public final static int MAX_LEVEL = 10;/ 最高级别private int score = 0, curLevelScore = 0;/ 总分和本级得分private GameCanvas canvas;private ControlPanel controlPanel;/定义控制面板private RussiaBlock block;/定义俄罗斯方块private int style = 0;boolean playing = false;/设置布尔类型为 游戏为不可玩privat
51、e JMenuBar bar;/定义菜单栏private JMenu gameMenu, controlMenu, windowStyleMenu, informationMenu;/定义游戏菜单 控制菜单(未实现) 样式风格菜单 信息菜单 private JMenuItem newGameItem, setBlockColorItem, setBgColorItem,/定义新游戏选项卡 设置背景色选项卡(未实现) turnHardItem, turnEasyItem, exitItem;/难一级选项卡(未实现) 简单一级选项卡(未实现) 推出选项卡(未实现)private JMenuItem playItem, pauseItem, resumeItem, stopItem; /开始选项卡 暂停选项卡 恢复选项卡 停止选项卡 均未实现private JRadioButtonMenuItem windowsRadioItem, motifR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 针织厂生产计划编排制度
- 部编版语文小升初专项训练之词语填空有答案
- 2026第六届应急管理普法竞赛必考题库含答案全解
- 2026年大学生网络科技公司实习报告范文
- 压缩空气教学反思成功之处不足之处轿改进措施
- 我最难忘的一次生日派对写事件作文8篇
- 吊篮施工方案依据(3篇)
- 聚会高端活动策划方案(3篇)
- 新品竞价活动策划方案(3篇)
- 门窗活动优惠方案策划(3篇)
- 新湘科版小学六年级下册科学同步全册教案
- 新建福厦高铁迁改2标110kV及以上输电线路迁改工程(泉州地区、漳州地区)环境影响报告表
- 霍普金森杆试验报告
- 中草药种植基地项目可行性研究报告
- 病毒性肝炎传染病学教学
- 体育概论全部
- 最经典的能力素质模型词典与华为绩效考核表
- 内科学第八章 原发性支气管肺癌
- GB/T 24531-2009高炉和直接还原用铁矿石转鼓和耐磨指数的测定
- GB/T 2091-2008工业磷酸
- 外墙保温吊篮施工方案
评论
0/150
提交评论