”>
Applet应用
Applet程序中可使用java.awt包中的Graphics类提供的各种方法,在Applet程序中输出文本、绘制多种图形和显示图片等。
Graphics类对象代表当前当前组件的绘图环境。
1、设置字体和颜色
(1)设置字体
java.awt.Font类设置文本的字体(包括字型和字号)。
构造方法:
publicFont(Stringname,intstyleintsize)。
(2)设置颜色
可用java.awt.Color类设置或获取某一容器组件内的图形、文字的颜色。
Color类已包含13个颜色常量。
常用构造方法:
1、publicColor(intr,intg,intb);2、publicColor(floatr1,floatg1,floatb1)。
编程方法:
利用Color类创建出一Color类对象并设置颜色特性参数(三基色的分量);调用Graphics类中的setColor()将用户的颜色加入到系统中;再调用绘制函数输出图形、文字等。
案例:
importjava.applet.*;
importjava.awt.*;
publicclassMyAppleextendsApplet
{
Buttonb1,b2;intsum;
publicvoidinit()
{b1=newButton("确定");
b2=newButton("取消");
add(b1);add(b2);
}
publicvoidstart()
{sum=0;
for(inti=1;i<=100;i++)
{sum+=i;}
}
publicvoidpaint(Graphicsg)
{g.setColor(Color.blue);
g.drawString("程序设计方法",20,60);
g.setColor(Color.red);
g.drawString("sum="+sum,20,100);}}
2、输出文本
(1)绘制字符串
publicvoiddrawString(Strings,intx,inty)
(2)绘制字符
publicvoiddrawString(charc[],intoffset,intnumberintx,inty)
(3)绘制字节
publicvoiddrawString(byteb[],intoffset,intnumberintx,inty)
3、绘制几何图形
voiddrawLine(intx1,inty1,intx2,inty2)) //画线
voiddrawArc(intx,inty,intwidth,intheight,intstartAngle,intarcAngle) //画弧
voiddrawOval(intx,inty,intwidth,intheight)//画椭圆
voiddrawRect(intx,inty,intwidth,intheight) //画矩形
voiddrawPolygon(intxPoints[],intyPoints[],intPoints) //画多边形
voiddrawRoundRect() //画圆角矩形
voidfill3DRect() //画3D矩形
简单绘图(举例)
importjava.applet.*;
importjava.awt.*;
publicclassMyAppleextendsApplet
{publicvoidpaint(Graphicsg)
{intr,gr,b,h=300,w=400;
intx,y,x1,y1;
for(inti=0;i<100;i++)
{r=(int)(Math.random()*255);
gr=(int)(Math.random()*255);
b=(int)(Math.random()*255);
g.setColor(newColor(r,gr,b));
x=(int)(Math.random()*w);
y=(int)(Math.random()*h);
x1=(int)(Math.random()*10+5);
y1=x1;
g.fillOval(x,y,x1,y1);}}}
4、显示图像
(1)定义图像对象
java.awt包java.awt.Image类,可以定义图像对象。
如:
Imagepic1,pic2;
(2)加载图像(定义获取图像对象)
java.awt包java.awt.Image类直接调用:
getImage(URLurl,Stringname)。
url:
给出图片文件基本位置的绝对URL路径。
name:
图片文件名称,它相对于url参数的图片位置。
例如:
magemyImage;
myImage=getImage(getDocumentBase(),“哈哈.jpg”);
(3)显示图像的操作
drawImage(Imageimg,intx,inty,ImageObserverobserver)
如:
drawImage(myImage,10,20,this);
5、动画
在图片演示的程序中,连续使用如下4中方法:
创建Image类的对象数组
使用drawImage()方法绘图
使用Thread.sleep()方法休眠当前线程
使用repaint()方法重绘绘图区
6、音频播放
编程要点:
先加载声音文件,再播放它。
编程方法:
(1)在Applet程序中直接调用play()函数。
play(getDocumentBase(),mySound.au”),
(2)使用AudioClip接口提供的相关API来实现音频播放、停止和循环播放,AudioClip接口中定义了3个方法:
1)play()方法该方法将从头开始重新播放指定的音频剪辑。
2)stop()方法该方法将停止当前正在播放的音频剪辑。
3)loop()方法该方法将循环播放指定的音频剪辑。
Applet类中提供了多个播放音频资源的方法,它们都可以获取AudioClip接口的实现,并调用该接口中定义的方法控制音频的播放与停止。
用户图形界面
用户图形界面使用图形方式,借助于窗口中的菜单、按钮等界面元素和鼠标操作,实现用户计算机系统的交互作用。
用户也通过相界面向计算机系统发布命令、控制操作,系统的运行结果也可以以图形界面方式显示给用户。
图形用户界面生动形象、操作方便,深受广大用户的欢迎。
一、Java的GUI概述
1、图形用户界面GUI(GraphicsUserInterface),就是应用程序提供给用户操作的图形界面,包括窗口、菜单、按钮、工具栏和其他各种界面元素。
在Java里有两个包为GUI设计提供了丰富的功能:
awt(abstractwindowstoolkit)包和Swing包。
awt是java的早期版本,组件种类有限,只提供基本的GUI设计工具。
Swing包是SUN公司对早期版本的改进版本,它不仅包括AWT中所有部件,并且提供了更加丰富的部件和功能,它足以完全实现GUI设计所需的一切功能。
创建窗体的步骤:
1)创建一个窗体对象(Framefrm=newFrame())
2)设置窗体的大小(frm.setSize(400,400))
3)显示窗体(frm.setVisible())
例:
在窗体中加入一个按钮
importjava.awt.*;//导入awt工具包
publicclassAWTFrame//类名是AWTFrame
{
publicstaticvoidmain(String[]args)//main方法
{
Framefrm=newFrame();//声明并实例化了一个Frame对象
frm.setSize(400,300);//把窗体对象的宽度设为400,高度设为300
frm.setLayout(null);//设置窗体布局为空,必须要有这个语句
Buttonbtn=newButton("一个按钮");//创建一个Button对象,按钮文字是“一个按钮”
btn.setLocation(100,100);//设置按钮的位置,左上角坐标是(100,100)
btn.setSize(80,20);//设置按钮的大小,宽为80,高为20
frm.add(btn);//把这个按钮加到frm窗体中
//frm.remove(btn);
frm.setVisible(true);//显示窗体
}
}
二、GUI组件分类
在AWT的概念中,窗口系统中所显示的各种对象都统称为“GUI组件”(Component)。
组件有基本组件和容器组件之分。
1)、基本组件是不可再分割的组件,基本组件各自都有它们特定的功能。
基本组件是构成图形用户界面的基本元素。
2)、容器组件是用来包含其他组件的,故称之为容器(container)。
用户可以把各种组件放入到容器中,也可以把容器放到另一个容器中,从而形成具有层次的组件结构。
3)、AWT提供了的容器类有:
Frame类、Dia1og类和Panel类。
除了AWT提供的容器外,Applet类也是一个容器,它是Panel类的一个子类。
1、AWT标准组件图示:
2、AWT中主要类及其关系:
3、AWT组件:
java.awt包
4、基本组件:
5、Frame类常用方法:
setSize():
设置窗口大小。
setLocation():
设置窗口位置。
setResizable():
设置窗口大小是否可调整。
setTitle():
设置窗口标题。
setBackground:
设置背景颜色。
三、事件与事件处理
1、Java事件模型—基本概念
事件源:
发生事件的组件。
如:
按钮、输入文本框、菜单项、窗口。
事件:
用户对组件的一个操作,称之为一个事件。
如:
单击按钮、输入文本、选择菜单、点击窗口关闭按钮。
事件监听器:
由实现了事件监听器接口的类创建的对象,负责接收、解释并处理事件的对象。
事件监听器接口:
规定了处理某种事件时必须实现哪些方法。
2、事件处理的包
java.awt.event包,它提供AWT事件处理所需的类和接口。
1)、事件类
2)、事件处理的具体过程
事件处理过程:
①针对某事件(XXXEvent)创建事件监听器类,实现相应的事件监听器接口(XXXListener)
②可以不单独定义事件监听器类,而在当前类中实现该接口。
当前对象就可以做为事件监听器。
③事件源注册监听器对象(addXXXListener())
一个事件源可能会产生多种事件,每一种事件处理都需要注册监听器,因此一个事件源可能会注册多个监听器。
事件监听器可以实现多个事件监听器接口,此时可监听处理多类事件。
四、事件适配器
Java语言为一些监听接口提供了适配器(Adapeter)类,事件适配器类是抽象类,可以通过继承事件所对应的Adapter类,重写需要实现的方法,无关方法不用实现,原因是监听器适配器类是对事件监听器接口的简单实现(方法体为空)。
JDK中提供事件适配器方式来实现事件编程。
1、按钮和标签
1)按钮
构造方法:
Button();Button(Stringlabel);
常用方法:
publicvoidsetLabel(Strings);publicStringgetLabel();
publicvoidaddActionListener(ActionListenera)
事件响应:
java.awt.event.ActionListener(接口)
voidactionPerformed(ActionEvente)
2)Label类
Label类的构造方法
Label():
建立一个空的Label组件。
Label(Stringtext):
建立一个标题为text的Label组件,预设标题的对齐方向为靠左对齐。
Label(Stringtext,intalignment)
Label类常用的方法
publicStringgetText():
获取当前标签的文本。
publicvoidsetAlignment(intalignment):
将当前标签的对齐方式设置为给定参数所指定的。
可能值是Label.LEFT,Label.RIGHT和Label.CENTER。
publicvoidsetText(Stringtext):
将当前标签的文本设置为指定文本。
事件响应不引发事件
2、文本框和文本区
1)、文本框(TextField)
TextField对象表示可编辑的单行文本的文本组件。
TextField类的构造方法
TextField():
建立一个空的TextField组件。
TextField(intcolumns):
建立一个空的TextField组件,并设置显示单行字数为columns。
事实上组件不一定刚好能容纳columns个字符,因为每个字符的宽度可能不一样。
TextField(Stringtext):
建立一个TextField组件,并设置上面的文字为text。
TextField(Stringtext,intcolumns):
建立一个上面文字为text的TextField组件,并设置显示字数为columns。
TextField类的方法
publicvoidsetText(Strings)
publicStringgetText()
事件响应
java.awt.event.TextListener(接口)
voidtextValueChanged(TextEvente)
java.awt.event.ActionListener(接口)
voidactionPerformed(ActionEvente)
2)、文本区(TextArea)
TextArea类是用来显示多行文字的,并且允许在上面编辑,可以把它看成是多行的TextField类。
TextArea类的构造方法有下列五种:
TextArea():
建立一个空的TextArea组件,预设两个滚动条都会出现。
TextArea(introws,intcolumns):
建立一个空的TextArea组件,并指定最多可显示在屏幕上的行数和列数,列数只是一个大概的值,要看里面字符的宽度和操作系统而定。
预设两个滚动条都会出现。
TextArea(Stringtext):
建立一个空的TextArea组件,预设两个滚动条都会出现,但设置里面的初始文字为text。
如果text等于null,则会设置为空字符串。
TextArea(Stringtext,introws,intcolumns):
类似第二个构造方法,但设置里面的初始文字为text。
TextArea(Stringtext,introws,intcolumns,intscrollbars)
常用方法
publicvoidappend(Strings)
publicvoidinsert(Strings,intindex)
pubilcvoidreplaceRange(Strings,intstart,intend)
事件响应
java.awt.event.TextListener(接口)
voidtextValueChanged(TextEvente)
3、单复选框和列表
㈠复选框(Checkbox)
创建复选框:
publicCheckbox()
publicCheckbox(Strings)
publicTextField(Strings,booleanstate)
常用方法
publicbooleangetState()
publicvoidsetState(bo