选择显示字体大小

java applet 入门第三天

xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 

java的图形界面与设计

    图形用户界面(graphics user interface),简称gui,使用图形的方式,借助菜单、按钮等标准界面元素和鼠标操作,帮助用户方便地向计算机系统发出指令,启动操作,并将系统运行的结果同样以图形方式显示给用户。图形用户界面画面生动、操作简单,省去了字符界面用户必须记忆各种命令的麻烦,深受广大用户喜爱和欢迎,已经成为目前几乎所有应用软件的既成标准。所以学习设计和开发图形用户界面,是应用软件开发人员必修的一课。

 java中构成用户界面的各种元素和成分可以粗略地分成为三类:容器、控制组件和用户自定义成分。

1.容器

     容器是用来组织其他界面成分和元素的单元。一般说来一个应用程序的图形用户界面首先对应于一个复杂的容器,如一个窗口。这个容器内部将包含许多界面成分和元素,这写界面元素本身也可以又是一个容器,这个容器将再进一步包含它的界面成分和元素,依次类推就构成一个复杂的图形界面系统。

容器的主要作用和特点有:

(1)容器有一定的范围。一般容器都是矩形的,容器范围边界可以用边框框出来,有些则没有可见的标记。

(2)容器有一定的位置。这个位置可以是屏幕四角的绝对位置,也可以是相对于其他容器边框的相对位置。

(3)容器通常都有一个背景,这个背景覆盖全部容器,可以通明,也可以指定一幅特殊的图案,使界面生动化和个性化.

(4)容器中可以包含其他的许多界面成分和元素。当容器被打开显示时,它上面的所以成分和元素也同时显示出来,当容器被关闭和隐藏时,它所包含的成分和元素也一起被隐藏。

(5)容器可以按一定的规则来物理地安排它所包含的元素,如这些元素的相对位置关系、它们的的前后排列关系等。

(6)容器可能被包含在其他容器之中。

2.控制组件

    与容器不同,控制组件是图形用户界面的最小单位之一,它里面不再包含其他的成分.控制组件的作用是完成与用户的一次交互,包括接受用户的一个命令,接受用户的一个文本输入,向用户显示一段文本或一个图形等。从某种程度上来说,控制组件是图形用户界面标准化的结果,目前常用的控制组件有:

(1)复选框(checkbox)

(2)单选按钮(checkboxgroup或radiobutton)

(3)下拉列表(list或choice)

(4)标签(label)

(5)文本编辑区(edit或textfield,textarea)

(6)按钮(button)

3.用户自定义成分

    除了标准的图形界面元素,编程人员还可以根据用户需要设计一些用户自定义的图形界面成分,例如绘制一些几何图形,使用标志图案等。用户自定义成分由于不能像标准界面元素一样被系统识别和承认,所以通常只能起到装饰、美化等作用,而不能响应用户的动作,不具有交互功能。

1.复选框(checkbox)

例子:

上面的例子是怎样用java实现的呢?
它的语法如下:

import java.awt .*;
import java.applet .*;
import java.awt.event.* ;
 
public class fuxuan extends applet 
         implements itemlistener
{
         public void init()
         {
         checkbox one=new checkbox("猫");
         checkbox two= new checkbox("狗",true); 
         checkbox three=new checkbox("兔",false);
         one.additemlistener(this); 
         add(one);
         two.additemlistener(this); 
         add(two);
         three.additemlistener(this);
         add(three);
         }
         public void itemstatechanged(itemevent e)
         {
         }
}

分析:

3行:调入处理包,以处理复选框的事件
第4行:implements是加入事件的接口,用implements来调用接口,这个接口函数是itemlistener;
第8行:调用函数checkbox建立第1个选项,默认状态为假,即没有事先选中。
第9行:建立一个事先已经默认为正确的选项。
第12,14,16行:当用户点击复选框使其状态发生变化时就会引发itemevent类代表的选择事件。这个复选框已经把自身注册给itemevent事件的监听者itemlistener.系统会自动调用这个 itemlistener中的public void itemstatechanged(itemevent e)方法来响应复选框的状态改变。实际的实现了itemlistener接口的监听者。这个方法的方法体通常包括这样的语句:调用选择事件的方法e.getselectable()获得印发选择事件的事件源对象引用,再调用e.getstate()获取选择事件之后的状态。也可以直接利用事件事件原对象自身的方法操作,不过要注意的是getselectable()方法的返回值是实现了selectable接口的对象,需要把它强制转化成真正的事件原对象类型。例如: ((checkbox)e.selectable).getstate():与e.getstate效果是一致的。
第13,15,17行:将one、two、three三个复选框加入到面板中去,以使起能够在屏幕上显示出来。

2.单选按钮(checkboxgroup)

    上面的例子是怎样用java实现的呢?
它的语法如下:

import java.awt .*;
import java.applet .*;
import java.awt.event .*;
 
public class danxuan extends applet implements itemlistener
{
         public void init()
         {
         checkboxgroup cbg=new checkboxgroup();
    checkbox one=new checkbox("正确",false,cbg);
    checkbox two=new checkbox("不正确",false,cbg);
    checkbox three=new checkbox("我也不知道",true,cbg);
    one.additemlistener(this);
    two.additemlistener(this);
    three.additemlistener(this);
    add(one);
    add(two);
    add(three);
         }
         public void itemstatechanged(itemevent e)
         {
         }
}

分析:
第9行: 先建立一个新表单f,f的名称为checkbox group
第10行:调用函数 checkboxgroup 建立一个新的单选按钮组cbg
第11行:调用函数checkbox建立第1个选项,名称为"one",默认状态为假,即没有事先选中。
第12行:建立一个事先已经默认为正确的选项,名称为“three”。
第13,14,15行:当用户点击复选框使其状态发生变化时就会引发itemevent类代表的选择事件。这个单选框已经把自身注册给itemevent事件的监听者itemlistener.系统会自动调用这个 itemlistener中的public void itemstatechanged(itemevent e)方法来响应单选框的状态改变。实际的实现了itemlistener接口的监听者。调用 checkboxgroup的getselectbox()方法可以获得用户选择了哪个按钮,这个方法返回用户选中的checkbox对象,再调用该对象的方法getlabel()就知道用户选择了什么样的信息。同样,通过调用 checkboxgroup的setselectcheckbox()方法,可以在程序中指定单选按钮组中的哪个按钮。例如下面的语句说明选择为不知道: cbd.setselectedcheckbox(three);另外也可以直接使用按钮组中的checkbox单选按钮的方法,例如直接调用:one.getstate(); 就可以知道这个按钮被选中了,那么其他按钮一定处于未选中状态。
第16,17,18行:将one、two、three三个标签加入到容器f中去,以使起能够在屏幕上显示出来。
第20行则是事件处理函数了!专门用来处理单选项改变的效果!这儿没有加入代码。所以它不能处理任何事件。

3.下拉列表(choice)和列表(list)

1.下拉列表:

    上面的例子是怎样用java实现的呢?
它的语法如下:

import java.awt .*;
import java.applet .*;
import java.awt.event .*;
 
public class liebiao1 extends applet implements itemlistener
{
         public void init()
         {
          choice c= new choice();
          c.add ("-----初始选项------");
          c.add ("第一选项");
          c.add ("第二选项");
          c.add ("第三选项");
          c.add ("第四选项");
          c.additemlistener(this);
          add(c);
         }
         public void itemstatechanged(itemevent e)
         {
         }
}
分析:
 
8行:调用函数 choice 建立一个新的下拉列表 c 
9行:调用c.add建立第1个选项,名称为"----初始选项----",这是
默认状态,即屏幕上什么也没有选时的选项。它的序号是0
10行:建立第2个选项,名称为“第一选项”实际上它已经是第2个
选项,这属于一点小小的技巧问题。它的序号是1。这相信大家可以
更好地理解。
 
15行:当用户点击选择项时,使其状态发生变化,就会引发itemevent
类代表的选择事件。itemevent事件的监听者itemlistener会自动调用
这个方法来响应下拉列表的状态改变。getselectedindex()方法
将获得被选中的选项的序号,getselecteditem()方法将获得被选中选项
的标签文本字符串。select(int index)方法和select( string item)方
法使程序选中指定序号或文本内容的选项。下拉列表可以产生itemevent
代表的选择事件,如果把选项注册给实现借口itemlistener 的监听者:
c.additemlistener().则当用户单击下拉列表的某个选项时,系统自动产
生一个itemevent类的对象包含这个事件的有关信息。
 
16行:将下拉列表 c 加入到容器f中去,以使起能够在屏幕上显示出来。
 

2.列表:(可以多选)

    上面的例子是怎样用java实现的呢?
它的语法如下:

1.…………//与前面的例子相同
2. list year=new list(4,true);
3. year.add("1998");
4. year.add("1999");
5. year.add("2000");
6. year.add("2001");
7. add(year);
8.…………//与前面的例子相同

分析:
2行:调用函数 list 建立一个新的多选项列表 year.它有4个选项,
true表示此表可以多选。当为false时,它就只能单选。 
3行:调用year.add建立第1个选项,名称为"1998",它的序号是0
4行:建立第2个选项,名称为“1999”。它的序号是1。
 
8行:将下拉列表 c 加入到容器f中去,以使起能够在屏幕上显示出来。
如果想或知用户选择了列表中的哪个选项,可以调用list对象的:
getselecteditems()方法,该方法返回一个 string类型的数组,里面的
每个元素是一个被用户选中的选择项,所有的元素就包括了所有被用户选
择的选项。这个方法返回用户选中的选择项。列表可以有多选和单选。所
list对象还有一个方法geetselectitem()方法,与单选不同。这个方法
返回单个的字符串。 
除了可以返回用户选中的标签字符串,还可以获得被选中选项的序号。在
list里面,getselectindex()方法将返回被选中的选项和序号。
getselectindexs()方法将获得被选中选项的序号组成的整型数组。 

4.标 签

标签,就是用户只能查看,不能修改的文本显示区域,它能起到信息说明的作用,每个标签用一个label类的对象表示。请看例子:

例子:

上面的例子是怎样用java实现的呢?
它的语法如下:

……//与前面的例子一样!
1. label prompt1=new label("这是标签 1 !");
2. label prompt2=new label ("这是标签 2 !");
3. add(prompt1);
4. add(prompt2);
……//与前面的例子一样!

分析:
1行:调用函数 label 建立第 1 个标签 prompt1; 
2行:调用函数 label 建立第 2 个标签 prompt2; 
 
3行:将标签 1 加入到容器中去,以使起能够在屏幕上显示出来。
4行:同样,将标签2加入到容器中去,以使起能够在屏幕上显示出来。
 
    标签不能接受用户的输入,所以不能引发事件,不是事件源。如果
希望修改标签上显示的文本,可以使用label对象的方法gettext(新字符
),同样对于一个未知的标签,可以通过调用label对象gettext()
方法来获得它的文本内容。 

5.文本编辑区(textfield和textarea)

    java中用于处理文本的基本组件有两种:
单行文本框 textfield 和 多行文本区域textarea,
他们都是textcompponent的子类。在创建文本组件
时可以同时指出文本组件中的初始文本字符串。

例子:

上面的例子是怎样用java实现的呢?
它的语法如下:

……//与前面的例子相同
1. textfield text1= new textfiled("textfield",20);
2. text1.addactionlistener(this);
3. textarea text2 = new textarea ("textarea",4,20);
4. text2.addtextlistener(this);
5. add(text1);
6. add(text2);
……
8. public void textvaluechanged(textevent e)
9. {
10.  }
……//与前面的例子相同

分析:
1行:调用函数 textfiled 建立第 1 个标签 text1,初始字符串为
textfield”,长度为20个字符的长度; 
2行:为text1加入监视函数,用来响应它的事件改变。
3行:调用函数 textarea 建立第 2 个标签 text2,初始字符串为
teatarea”,共有4行,每行也      为20个字符串的长度。 
4行:为text2加入监视函数,用来响应它的事件改变。
 
 
5行:将标签 1 加入到容器中去,以使起能够在屏幕上显示出来。
6行:同样,将标签2加入到容器中去,以使起能够在屏幕上显示出来。
 
    除了继承textcomponent类的方法,textfield还有一些自己的特殊
方法,例如,对于密码输入,要求输入的内容用“*”来显示,可以调用
如下的方法:
                 textfield tf = new textfield("输入密码:");
                 tf.setechochar('*');
         这样就可以了。
 
    textarea 也有自己的特殊方法:
                 append(string s)在当前文本区域中已有的文本后面添加字符串
"s"的内容。      insert(string s,int index)方法将字符串s的内容插入到
已有文本的指定序号处。

6.按 钮

    按钮是图形界面中非常重要的一种 基本组件,按钮本身不显示信息,它一般对应一个事先定义好的功能操作,该操作通常用一段程序来表示。
当用户点击按钮 时,系统自动执行与该按钮
相联系的程序, 从而完成预先指定的功能。
     请看下面的例子:

例子:
提交:

取消:

要制作上面的按钮,请看下面的语法:

……//与前面的例子相同
1. button b = new button("提 交");
2. b.addactionlistener(this);
3. button c = new button("取 消");
4. c.addactionlistener(this);
5. add(b);
6. add(c);
7. public void actionperformed(actionevent e)
8. {
9.   }
……//与前面的例子相同

分析:
1行:调用函数 button 建立第 1 个按钮 b,名称为“提交”;
2行:为 提交按钮b 加入监视函数,用来响应它的事件改变。
3行:调用函数 button 建立第 2 个按钮 c ,名称为“取消”; 
4行:为 取消按钮c 加入监视函数,用来响应它的事件改变。
 
 
5行:将 “提交按钮b” 入到容器中去,以使起能够在屏幕上显示出来。
6行:同样,将“取消按钮c”加入到容器中去,以使起能够在屏幕上显示出来。
    按钮可以引发动作时间,当用户点击一个按钮时就引发了一个动作事件,希
望响应按钮引发的动作事件的程序必须把按钮注册给实现了actionperformed
(actionevent e)方法书写体。在方法体中,可以调用     e.getsource()方法来获取
引发动作事件的按钮对象引用,也可以调用e.getactioncommand()方法来过去实
现为这格式件设置的命令名。调用按钮的getlabel()方法可以返回按钮的标签;
调用按钮的setlabel(string s)方法可以把按钮的标签设置为s;调用
setactioncommand()方法可以为按钮设置一个命令名,这个命令名在响应事件时
可能用到;调用getactioncommand()方法可以获得这个命令名。要注意的是:所
有的组件必须都放置在一顶的容器中才能发挥做用,将基本的组件防入容器的方法
是该容器的add()方法。

鼠标和键盘事件处理函数

所谓事件,就是指在系统中有某些我们所关心的事情(例如:鼠标移动了,用户按下了某个按键……等)发生了,然后系统便通知我们去处理这些事情。这样的概念在一般采用窗口用户界面环境的操作系统中,是十分常见的。

java中,所有的事件都定义在类event(java.awt.event)内,读者有兴趣的话,可以参考java的api。

1)鼠标事件。

鼠标时间一般有:
mousedown:当鼠标的按键被用户按下时,就会发生mouse_down时间,这个时候系统便调用方法mousedown对该事件进行处理。方法mousedown的写法为:

public boolean mousedown(event e,int x,int y)
{
      ……
}

由上面可知,方法mousedown有三个参数:e,x,y。e就是事件本身,我们把“事件”看成一个对象实体,只不过它的类是event而已,同时,事件在使用上和一般的对象实体没有差别。而x,y则是这个时间发生时的鼠标的坐标值。要注意的是它的方法返回值是boolean型的值,这点要注意!另外,由于有些机器的鼠标只有一个按键,考虑到java的与平台无关性,因此,这个方法中,就没有我们常见的右键的功能了。它不区分左右按键。

mouseup:与前面的相反,这个方法是鼠标放开时的处理函数了,对于使用方法,与mousedown完全相同。这儿就不多说了!

mousemove:mouse_move和mouse_drag都是由鼠标移动产生的事件,方法mousemove就是用来处理mouse_move事件的。方法为:

public boolean mousemove(event evt,int x,int y)
{
……
}

所用到的参数和方法mousedown和mouseup的完全一样。

mousedrag:从上面知道,这个方法当然是用来处理mouse_drag事件的。方法为:

public boolean mousedrag(event e,int x,int y)
{
……
}

mouseenter:这个方法是用来处理mouse_enter事件的,当鼠标进入到小应用程序的窗口范围时,就会发生mouse_enter事件。处理方法为:

public boolean(event evt, int x,int y)
{
……
}

所用到的参数和前面一样,不多说了。

mouseexit:这个方法是用来处理mouse_exit事件的。当鼠标从小应用程序窗口移出来的时候,就会发生mouse_exit事件了。处理方法为:

public boolean (event e,int x,int y)
{
……
}

好了,让我们来看一看具体的例子:[请点击这儿进入]

2)键盘事件:
和鼠标比起来,键盘产生的时间就简单多了,一般说来,我们关心的就是用户按下了什么键,再处理就行了,而不必像鼠标那样还具有移动的事件要处理。它的主要事件有:

key_press:按下键时产生;
key_release:放开键盘按键的时候产生。处理它们方法方法分别为:

public boolean keydown(event evt,int x,int y)
{
……
}

public loolean keyup(event evt,int x,int y)
{
……
}

参数中的evt还是表示事件本身的对象,而key就是那个被用户按下或放开的案件。java已经在类event中,定义好一些表转的按键值,如下:

类变量

代表的按键

类变量

代表的按键

event.up

方向键中的“上”键

event.f3

“f3”键

event.down

方向键中的“下”键

event.f4

“f4”键

event.left

方向键中的“左”键

event.f5

“f5”键

event.right

方向键中的“右”键

event.f6

“f6”键

event.home

“home”键

event.f7

“f7”键

event.end

“end”键

event.f8

“f8”键

event.pgup

“page up”键

event.f9

“f9”键

event.pgdn

“page down”键

event.f10

“f10”键

event.f1

“f1”键

event.f11

“f11”键

event.f2

“f2”键

event.f12

“f12”键

 


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons