JAVA语言的图形用户界面的设计与实现Word文档格式.docx
《JAVA语言的图形用户界面的设计与实现Word文档格式.docx》由会员分享,可在线阅读,更多相关《JAVA语言的图形用户界面的设计与实现Word文档格式.docx(28页珍藏版)》请在冰点文库上搜索。
4、画弧:
voiddrawArc(intx,inty,intwidth,intheight,intstartAngle,intendAngle);
voidfillArc(intx,inty,intwidth,intheight,intstartAngle,intendAngle);
5、画多边形:
voiddrawPolygon(intx[],inty[],intnumpoints);
voidfillPolygon(intx[],inty[],intnumpoints);
三、绘制文本:
Graphics类提供了三个与绘制文本有关的方法:
drawByte()、drawChars()、drawString()。
这三个方法一般要和Font、FontMetrics类一起使用。
用Font类可以设定字体、字体的样式及大小;
用FontMetrics则可以记录和获取当前字体的规格等说明。
Font类有关的方法有:
Font(Stringname,intstyle,intsize):
创建字体;
setFont(Fontobj):
设置字体;
getFont():
获得当前Graphics上所使用的字体;
String[]getFontList():
返回当前系统可用字体名称数组;
getSize()、getStyle()、isPlain()、isBold()、isItalic();
四、设置颜色:
Java的颜色类:
Color允许用户任意选择自己所需要的颜色。
Color类中定义了一些常用的颜色实例,如下表所示:
颜色名称
RGB值
白色Color.white
255.255.255
黑色Color.blank
0.0.0
亮淡灰Color.lightGray
192.192.192
灰色Color.gray
128.128.128
暗灰Color.darkGray
64.64.64
红色Color.red
255.0.0
绿色Color.green
0.255.0
蓝色Color.blue
0.0.255
黄色Color.yellow
255.255.0
紫(洋)红Color.Magenta
255.0.255
青色Color.cyan
0.255.255
青蓝Color.cyan
粉红Color.pink
255.175.175
橘色Color.orange
255.200.0
Color类中提供了以下方法:
Color(intcolor1,intcolor2,intcolor3);
创建颜色
Color(intred,intgreen.intblue);
Color(intrgbValue);
Color(floatred,floatgreen,floatblue);
setForeground();
setBackground();
setColor();
getColor();
getRed()、getGreen()、getBlue()、getRGB()。
五、显示图像:
Java中处理图像的类是:
Image,它也是AWT中的类库之一。
Java目前支持的图像格式有:
GIF和JPEG两种。
对图像操作一般可为三步:
创建、加载和显示。
1、图像的创建:
可利用以下方法:
ImagecreateImage(ImageProducerimgProd);
ImagecreateImage(intwidth,intheight);
2、图像的加载:
ImagegetImage(URLurl);
ImagegetImage(URLurl,StringimageName);
3、图像的显示:
利用的方法为:
booleandrawImage(ImageimgObj,intx,inty,ImageObserverimgOb);
显示图像是通过Graphics类的drawImage()实现的。
其中:
imgOb是一个ImageObserver接口对象,它用来监测图像加载的过程。
六、动画制作:
Java不仅提了对图形、图像的支持,而且还允许用户实现连续图像的播放,即动画技术。
Java对动画的处理是:
首先动画图像一次性从网络上下载完毕或在不影响动画效果的前提下分若干次下载,下载后的图像存放于数组或向量中,用一指针顺序提取,然后逐一显示到屏幕上。
当然动画制作过程中会出现一些意想不到的效果。
闪烁便是其中之一。
克服它的技术有二:
一是改写update()方法,内定的update()方法是先清除整个画面,然后再调用方法paint()显示图像,改写之后的update()方法为:
publicvoidupdate(Graphicsg)
{
paint(g);
}
二是利用双缓冲技术,双缓冲技术如下:
1、在图形缓冲区内创建将要使用的图形对象:
offscreenimage;
2、在Applet的init()方法中,实例化offscreenimage对象;
3、将要画到屏幕上的图像,转画到offscreenimage上;
4、将offscreenimage上的图像,一次性的画到Applet的画面上;
5、改写update()方法。
Java的事件处理
一、Java事件处理机制:
事件委托处理。
事件处理是GUI编程的核心,Java中的事件就是对象。
Java.awt.event包中定义了丰富的事件类型层次。
面向对象编程的一个基本原则就是让最适合完成任务的对象完成任务。
指定一个对象处理组件事件的过程称为委托(delegation)。
事件处理对象称为听众(Listener)。
要让组件的某个活动事件的处理委托给某个听众,就要执行这个组件的addActionListener()方法,传递所要听众的引用。
每个组件类都针对该组件产生的每种事件有个addxxxListener()方法。
如下面的程序:
(ButtonDelegateTest.java)
importjava.awt.*;
importjava.awt.event.*;
publicclassButtonDelegateTestextendsjava.applet.Applet
{
publicvoidinit(){
Buttonb=newButtob(“Ihavealistener!
”);
add(b);
ActionListenerlistener=newTestListener();
b.addActionListener(listener);
classTestListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
System.out.println(“Listenerhere:
thebuttonwasclicked.”);
}
上面的程序就使用了事件委托模型:
听众:
listener是一个实现了接口ActionListener的类对象。
接口ActionListener很简单,只有一个方法,它的实现为:
publicinterfaceActionListenerextendsEventListener{
publicabstractvoidactionPerformed(ActionEvente);
addActionListener()方法的声明要求听众参数实现这个接口:
publicvoidaddActionListener(ActionListenerlistener);
由于听众要实现这个接口,所以知道动作事件何时发生,系统可以安全地对听众调用actionPerformed()方法,因为听众必定有actionPerformed()方法。
当然,事件也可以委托给自己,即自我包含类实现事件的听众,构造器把自己作为听众加进行。
如:
publicclassSelfButton2extendsButtonimplementsActionListener{
publicSelfButton2(StringLabel){
super(label);
addActionListener(this);
System.out.println(“Action!
三、Java事件的监听接口:
在java.awt.event包中,有11个事件监听接口,每个接口内部都包含了若干处理相关事件的抽象方法。
每个事件类都有一个监听者接口与之相对应,而事件类的每个具体事件类型都有一个具体的抽象方法与之相对应,当事件发生时,这个事件将被封装成一个事件类的对象作为实现参数传递给与之对应的具体方法,由这个方法负责响应并处理发生的事件。
与ActionEvent类相对应的接口为ActionListener,那么凡是处理ActionEvent事件的类都必须实现这个接口,重载actionPerformed()方法,并由这个方法处理事件。
当然,InputEvent类由于它不对应具体事件,所以它没有接口;
而MouseEvent类有两个接口与之相对应,一个是MouseListener,处理单击事件,另一个是MouseMotionListener,处理移动和拖动事件。
GUI标准组件概述
使用基本组件的步骤为:
1、创建基本组件;
2、放置到合适位置;
3、创建组件对象的监听者。
由于Component类是所有awt组件的抽象父类,它的常用方法为:
publicvoidadd(PopupMenupopup):
publicColorgetBackground():
publicFontgetFont():
publicColorgetForeground():
publicGraphicsgetGraphics():
publicvoidrepaint():
publicvoidsetBackground():
publicvoidsetFont():
publicvoidsetSize():
publicvoidsetVisible():
标签、按钮与动作事件
一、标签(Label):
它的常用方法有
Label():
Label(Stringstr):
Label(Stringstr,intalignment):
其中alignment的取值为:
LEFT、CENTER、RIGHT。
publicvoidsetText(Stringstr):
publicStringgetText():
publicintgetAlignment():
publicvoidsetAlignment(intalignment):
它不能发生事件。
二、按钮(Button):
它的作用是用来触发某个事件。
按钮在屏幕上显示的外形依赖于Java运行系统所在有具体平台,在AWT中用户无法改变按钮的外形,但在AWT中实现了一个标准按钮的外观和行为。
用户可以通过调用它的方法来改变按钮的字体、文本、前景色和背景色。
它的常用方法有:
Button():
Button(Stringstr):
publicvoidsetLabel(Stringstr):
publicStringgetLabel():
按钮可以引发动作事件:
ACTION_EVENT,具体响应由实现了接口ActionListener的监听者的actionPerformed(ActionEvente)方法实现。
在该方法中,我们可以通过e.getSource()获取引发动作事件的按钮的引用,也可以通过e.getActionCommand()方法获取按钮的标签或事先为这个按钮设置的命令名。
三、动作事件(ActionEvent):
ActionEvent类只包含一个事件,即:
ACTION_PERFORMED。
能引发这个事件的动作有:
点击按钮、双击列表框中的选项、选择菜单项、在文本框中按回车键等。
ActionEvent类的主要方法有:
1、publicStringgetActionCommand():
它返回引发动作事件的命令名。
命令名可以通过setActionCommand()方法实现。
Buttonbtn=newButton(“按钮标签”);
btn=setActionCommand(“命令名”);
btn.addActionListener(this);
那么在监听者按口的方法可以是:
if(e.getActionCommand()==“命令名”)
………}
当然我们也可以不专门设置命令名,此时命令名就是对象的标签名。
2、publicintgetModifiers():
如果引发动作时,用户也按了功能键,那么此方法返回功能键。
即:
ALT_MASK、CTRL_MASK、SHIFT_MASK、META_MASK.
文本框、文本域与文本事件
Java中用于文本处理的基本组件有:
TextFiled和TextArea,它们都是TextComponent类的子类。
一、文本事件(TextEvent):
TextEvent类只包含一个事件,即代表文本区域中文本变化的事件TEXT_VALUE_CHANGED,在文本域中改变文本时都将引发这个事件。
二、文本域的创建:
publicTextField():
publicTextField(intcols):
publicTextField(Stringstr):
publicTextField(Stringstr,intcols):
三、文本区的创建:
publicTextArea():
publicTextArea(introws,intcols):
publicTextArea(Stringstr):
publicTextArea(Stringstr,introws,intcols):
四、公共文本部件的特性:
publicvoidsetText(StringnewText):
publicStringgetSelectedText():
publicintgetSelectionStart():
publicintgetSelectionEnd():
publicvoidSelect(intselectionStsrt,intselectionEnd):
publicvoidselectAll():
publicvoidsetEditable():
publicbooleanisEditable():
五、文本域的特性:
publicvoidsetEchoChar(charch):
publicchargetEchoChar():
publicbooleanechoCharIsSet():
publicintgetColumns():
六、文本区的特性:
publicvoidappendText(StringtextToAdd):
publicvoidinsertText(StringnewText,intposition):
publicvoidreplaceText(Stringstr,intstart,intend):
publicintgetRows():
七、事件响应:
1、TextComponent的事件:
TextEvent.
2、TextField的事件:
TextEvent、ActionEvent;
3、TextArea的事件:
4、对TextEvent的处理过程为:
textField1.addTextListener(this);
而听众类需实现的方法为:
publicvoidtextValueChanged(TextEvente);
也可以通过e.getSoure()获得引发事件的文本对象的引用。
单、复选按钮,列表与选择事件
一、选择事件(ItemEvent):
ItemEvent类只包含一个事件,即代表选择项的选中状态发生变化的事件:
ITEM_STATE_CHANGED。
引发这个事件的动作有:
1、改变列表框类List对象选项的选中或不选中;
2、改变下拉列表框类Choice对象选项的选中或不选中;
3、改变复选按钮类Checkbox对象选项的选中或不选中;
4、改变菜单项CheckboxMenuItem对象选项的选中或不选中;
ItemEvent类的主要方法有:
1、publicItemSelectablegetItemSelectable():
2、publicObjectgetItem():
3、publicintgetStateChange():
ItemEvent.SELECTED、ItemEvent.DESELECTED.
二、复选按钮(Checkbox):
1、创建复选按钮:
publicCheckbox():
publicCheckbox(Stringlabel):
publicCheckbox(Stringlabel,booleanstate):
publicCheckbox(Stringlabel,booleaninitialState,CheckboxGroupgroup):
2、检查和设置复选按钮的状态:
用publicbooleangetState()方法。
if(myCheckbox.getState())
{}
else
则publicvoidsetState(booleanstate)用来设置状态。
3、监听复选按钮的变化:
实现ItemListener接口。
具体方法为:
addItemListener(ItemListener):
removeItemListener(ItemListener):
ItemListener接口中有一个方法:
publicvoiditemStateChanged(ItemEventevt).
三、单选按钮(CheckboxGroup):
单选按钮是复选框的特例,用户可以把一组复选框放置在同一个复选框组中就可以创建单选按钮组。
创建复选框组的方法为:
publicCheckboxGroup():
然后用户使用下列方法向复选组中加入单选按钮:
publicCheckbox(Stringlabel,booleaninitialState,CheckboxGroupgroup):
用户可以使用对每个复选框调用getState()方法或对CheckboxGroup组调用getSelectedCheckbox().而getSelectedCheckbox()返回的是当前被选中的复选框的引用。
单选按钮的事件响应和复选框一样。
四、下拉列表框(Choice):
它是多选一的界面
1、创建下拉列表框:
有创建和添加选项两个步骤。
Choicesize=newChoice();
size.add(“10”);
size.add(“20”);
size.add(“30”);
2、常用方法:
publicintgetSelectedIndex():
publicStringgetSelectedItem():
publicvoidselect(intindex):
publicvoidselect(Stringitem):
publicvoidadd(Stringitem):
publicvoidinsert(Stringitem,intindex):
publicvoidremove(intindex):
publicvoidremove(Stringitem):
publicvoidremoveAll():
3、事件响应:
下拉列也产生I