L08 图形处理与appletWord格式文档下载.docx
《L08 图形处理与appletWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《L08 图形处理与appletWord格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
3.上机任务
列出本讲的所有上机题目,包括指导练习、课堂练习、课外练习
创建一个Frame,设置该Frame的背景颜色为黄色Yellow,设置Title为“画线和字符串示例”。
(30分钟)
实现一个Applet,在该Applet中有两个按钮,分别为“变圆”、“变方”,当我们按按钮后,界面中的图形也会随着发生变化(30分钟)
使用线程与画图实现字符串自屏幕右向左移动(20分钟)
如果要设计一个图形系统,请你设计基本的图形元件(Point,Line,Rectangle,Triangle)的简单实现(40分钟)
实现五子棋的功能,且鼠标左键下棋,鼠标右键是悔棋,但双方最多只能悔三步棋?
4.指导练习
带领学员完成的练习,如安装配置、知识点练习、重点难点
4.1.创建一个Frame,设置该Frame的背景颜色为黄色Yellow,设置Title为“画线和字符串示例”
说明解答步骤,每步的含义及解析
1.创建一个Frame,设置该Frame的背景颜色为黄色Yellow,设置Title为“画线和字符串示例”:
程序运行效果如下
2.技术分析
总体上来说界面还是一个Frame
na.通过setBackground(Color.YELLOW)方法来实现设置窗体背景色
nb.通过重写paint()方法来画直线与写字符串
nc.通过Graphics类中的drawString(str,x,y)方法写字符串
nd.通过Graphics类中的drawLine(x1,y1,x2,y2)方法画线
3.参考代码
importjava.awt.*;
publicclassDrawLineStrextendsFrame{
publicDrawLineStr(){
super("
画线和字符串示例"
);
this.setSize(180,160);
this.setBackground(Color.YELLOW);
this.setVisible(true);
}
publicvoidpaint(Graphicsg){
g.drawString("
这是一个字符串"
20,40);
这是一个条线段"
20,150);
g.drawLine(10,150,150,10);
publicstaticvoidmain(Stringargs[]){
newDrawLineStr();
}
4.功能扩充
将该程序补充完整,实现窗口关闭事件
4.2.实现一个Applet,在该Applet中有两个按钮,分别为“变圆”、“变方”,当我们按按钮后,界面中的图形也会随着发生变化
1.运行效果如下
a.本要求是要实现一个Applet,所以必须自己创建的类必须继承Applet。
b.通过触发按钮来实现图形的变化,所以在实现中需要通过gui的事件处理机制,我们可以选择在按钮的基础上实现监听来实现。
当然最简单的就是实现ActionListener接口,并实现actionPerformed方法;
c.如何在窗体中改变显示的图片?
这个需要让图形重新绘画自己,我们可以使用paint()方法来让窗体重新绘画
importjava.applet.*;
importjava.awt.event.*;
importjava.awt.event.ActionListener;
importjava.util.EventListener;
publicclassAppletAppextendsApplet
implementsActionListener{
Stringdrawing;
Buttonbutton1;
Buttonbutton2;
publicvoidinit(){
drawing="
"
;
button1=newButton("
变圆"
button2=newButton("
变方"
this.setLayout(newFlowLayout());
this.add(button1);
this.add(button2);
//this.setBackground(Color.red);
publicvoidstart(){
button1.addActionListener(this);
button2.addActionListener(this);
/**
*重写paint()方法,实现页面重写
*/
if(drawing.equals("
circle"
)){
g.drawOval(50,50,80,80);
}
fang"
g.drawRect(50,50,80,80);
*实现按钮监听
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==button1){
drawing="
this.repaint();
if(e.getSource()==button2){
4.扩充知识
我们在前面第一次课的时候已经给大家举过一次使用applet的例子,我们说过applet是java小应用程序,而且java小应用程序是一般都是在网页中运行的,如何将一个applet运行在html页面中?
这个就需要在html页面中使用<
applet>
标签来实现。
如下代码,将该程序保存为applet.html文件,运行后,可以在页面中来看到运行的效果
<
HTML>
<
BODY>
<
APPLETCODE="
AppletApp.class"
WIDTH=180HEIGHT=160>
/APPLET>
/BODY>
/HTML>
在此处有有两点需要指出:
a.code指定的是要加载的class文件;
所以必须是类名.clss;
b.原程序中没有指定包名,所以此处的code也不需要包名,且编译后生成的class文件与html文件放在一个目录下
4.3.使用线程与画图实现字符串自屏幕右向左移动
1.使用线程与画图实现字符串自屏幕右向左移动,运行效果如下
a.从上图的运行效果我们可以看出,移动的字符串内容是没有变化的,只是相对位置发生了变化;
b.如何在截面中显示字符串,我们在前面已经可以使用g.drawString(s,x,y)来实现;
c.如何动态从右向左变化?
其实只是让x坐标定时发生变化而已,y坐标不变。
那如何定时发生变化?
?
我们可以使用线程类实现。
还记得Thread.sleep(100)这个方法吗,可以让程序暂时停止运行0。
1秒。
publicclassTestMoveextendsFrame{
intx=160,y=80;
publicTestMove(){
字符串动画"
this.setBackground(Color.yellow);
this.setSize(180,160);
publicvoidpaint(Graphicsg){
g.setColor(Color.red);
ThisisatestofStringmove..."
x,y);
try{
//休眠100毫秒
Thread.sleep(100);
}catch(Exceptione){
//x坐标减10,即向左移动
x-=10;
if(x<
-160){
x=160;
//重新绘画
repaint();
publicstaticvoidmain(Stringargs[]){
newTestMove().setVisible(true);
4.功能扩展
根据上面的提示代码,自己动手,做个复杂点的功能,并能在html页面中运行
5.课堂练习
在上机课由学员自己完成的练习,一般需要给出思路、步骤、重点代码
5.1.如果要设计一个图形系统,请你设计基本的图形元件(Point,Line,Rectangle,Triangle)的简单实现
1.本题考察如下几个编程思想:
1)如何使用Graphics进行基本的画图
2)如果是在一个系统中来实现,那么我们需要将这些常用的方法进行简单的封装,这样可以重用;
例如作成可重用组件的方法
3)如果只是个小型系统或功能,我们可以使用鼠标直接在画板上来实现;
这样我们需要实现鼠标事件
//画点:
没有直接画点的方法,但如果将直接的开始与结束坐标一样就是一个点
g.drawLine(startX,startY,startX,startY);
//画线
g.drawLine(startX,startY,endX,endY);
//画矩形
g.drawRectintx,inty,intwidth,intheight)
那么在我们的实现中,矩形的长度=endX-startX;
宽度=endY-startY
g.drawRect(startX,startY,endX-startX,endY-startY);
//画三角
没有直接画三角的方法,但三角就是三条首尾相连的线组成的
g.drawLine(xa,ya,xb,yb);
g.drawLine(xb,yb,xc,yc);
g.drawLine(xc,yc,xa,ya);
2.部分参考代码
a.在Applet上实现画图,并根据鼠标的起落来实现坐标的值
b.初始化坐标
c.判断鼠标的操作
d.纪录鼠标松开时候的坐标
e.重写panit方法
f.重写update方法,调用paint()方法
g.其他辅助方法
h.启动运行
6.课外练习
由学员课后完成,如花时间较长的题目,面试题,项目中的功能,扩展性内容
6.1.实现五子棋的功能,且鼠标左键下棋,鼠标右键是悔棋,但双方最多只能悔三步棋?
。
7.常见问题
根据教学或自己备课过程中常碰到的问题及其解决方法
7.1.小应用程序和Application有什么区别
小应用程序指的是applet,applet一般是嵌套在html或jsp中的,作为web项目的客户端使用.
Application是应用程序(项目),可独立运行的.
两者最主要的区别是运行环境不同
8.相关知识
提供与本讲内容的某些知识点相关的参考资料或扩展内容与技术
8.1.无