⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jv0502.htm

📁 很不错到
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0041)http://king.online.ha.cn/java/jc/Jyu4.htm -->
<HTML><HEAD><TITLE>第五章 输入、界面和网络</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content="MSHTML 5.00.2614.3500" name=GENERATOR><LINK 
href="java04.css" rel=stylesheet type=text/css>
<SCRIPT language=JavaScript>
<!-- Hide the script from old browsers --
// Michael P. Scholtis (mpscho@planetx.bloomu.edu)
// All rights reserved.  January 15, 1996
// You may use this JavaScript example as you see fit, as long as the
// information within this comment above is included in your script.
function MakeArray(n){
   this.length=n;
   for(var i=1; i<=n; i++) this[i]=i-1;
   return this
}
hex=new MakeArray(16);
hex[11]="A"; hex[12]="B"; hex[13]="C"; hex[14]="D"; hex[15]="E"; hex[16]="F";
function ToHex(x){  // Changes a int to hex (in the range 0 to 255)
   var high=x/16;
   var s=high+"";   //1
   s=s.substring(0,2);          //2 the combination of these are the same as the trunc function
   high=parseInt(s,10);         //3
   var left=hex[high+1];        // left part of the hex-value
   var low=x-high*16;           // calculate the rest of the values
   s=low+"";        //1
   s=s.substring(0,2);          //2 the combination of these are the same as the trunc function
   low=parseInt(s,10);          //3
   var right=hex[low+1];        // right part of the hex-value
   var string=left+""+right;    // add the high and low together
   return string;
}
function rainbow(text){
   text=text.substring(3,text.length-4);        // gets rid of the HTML-comment-tags
   color_d1=255;        // any value in 'begin' 0 to 255
   mul=color_d1/text.length;
   for(i=0;i<text.length;i++){
      color_d1=255*Math.sin(i/(text.length/3)); // some other things you can try>> "=255-mul*i" to fade out, "=mul*i" to fade in, or try "255癕ath.sin(i/(text.length/3))"
      color_h1=ToHex(color_d1);
      color_d2=mul*i;
      color_h2=ToHex(color_d2);
      document.write("<FONT COLOR='#FF"+color_h1+color_h2+"'>"+text.substring(i,i+1)+'</FONT>');
   }
}
// --End Hiding Here -->
</SCRIPT>
<SCRIPT LANUGAGE="JavaScript">
<!--
function pop(pageurl) {
var
popwin=window.open(pageurl,"popWin","scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=no,width=700,height=450");
return false;
}
//-->
</SCRIPT>
<STYLE type=text/css>.main {
	FONT-FAMILY: "宋体"; FONT-SIZE: 9pt
}
</STYLE>
<SCRIPT language=LiveScript>
function WinOpen() {
   msg=open("","DisplayWindow","toolbar=no,directories=no,menubar=no");
   msg.document.write("");
   msg.document.write("<CENTER><H1>酷毙了</H1><h2>这 是<B>JavaScript</B>所开的视窗!</h2></CENTER>");
}
</SCRIPT>
</HEAD>
<BODY background=bk.jpeg bgColor=#ffffff leftMargin=0 text=#000000 topMargin=0 marginwidth="0" marginheight="0" tracingopacity="35" tracingsrc="file:///D|/tiu.jpg">
<p>&nbsp;</p>
<H3>第五章 输入、界面和网络</H3>
<p>  <a name="52"></a>5.2 用户界面设计</p>
<p>  用户界面设计在程序设计中占有较大的比重,在较为复杂的Java应用程序中,用户界面设计是不可缺少的。Java AWT(Abstract windowingToolkit)——抽象窗口工具箱就是专门用来进行用户界面设计的。</p>
<p>  <a name="521"></a>5.2.1 抽象窗口工具箱(AWT)概述</p>
<p>  AWT是Java语言提供的用户界面设计工具。AWT的基本思想是将一个窗口看作一系列嵌套的构件。最外层可以是窗口、菜单条、按钮或包容器等,而包容器又可以包含其它的构件或包容器。这样由表及里,所有的构件构成了一棵嵌套树。一个构件在这棵树中的位置决定了它显示在屏幕上的位置以及事件的传递途径。<br>
    从这个思想出发,AWT是将Java用户界面的基本元素分成四类:<br>
    包容器(Container)、基本构件(UI component)、画布(Canvas)和窗口构造构件(Windows construction component)。包容器是可以包含其它构件(包括包容器)的AWT构件。嵌板(panel)是使用最多的包容器,它可以显示在屏幕上。我们一直在使用的Applet是panel的一种,因为从类的继承性来看,Applet类是Panel类的子类。画布是AWT提供的专门用来绘画的构件,尽管在panel上也可绘画。<br>
    基本构件是不可以包含其它构件的AWT构件。它包括按钮、列表、弹出式菜单、单选按钮等用户界面的基本元素。</p>
<p>  <IMG height=307 src="tu5-1.gif" width=325></p>
<p>  图5-1 AWT类的类层次</p>
<p>  窗口构造构件包括框架、菜单条、对话框等。其中框架可以包含其它构件,但它也是一个构成窗口的重要构件,所以将它们归入这一类。这一类构件在Applet中使用较少,但编写独立的Application应用程序界面时,这些是必不可少的。如果从AWT类的层次角度来看,更容易了解它们之间的关系。Component类是大多数AWT类的根。它下面包括Canvas类和Button类、Label类等UI基本元素。TextComponent类包括TextField类和TextArea类。Container类包括Panel类和Windows类,分别对应于Applet和Application两种情况。它们下面又包括Applet类、Frame类等。所以,在JavaApplet中我们不需要定义Container或Panel,就可以加入UI的基本元素。<br>
    在本节的第二小节,将逐一介绍这些类的用法。第三小节将介绍版面的设置。另外大多数的AWT构件还需要定义相应的操作,即这个构件被激活时应完成的功能,第四小节将作专门介绍。最后一个小节将介绍窗口构造构件。</p>
<p>  <a name="522"></a>5.2.2 UI基本元素</p>
<p>  1. 标识(Label)<br>
    UI基本元素中最简单的就是标识。所谓标识实质上就是一段文字,但它与文字不同的是它是AWT构件。所以在每次repaint时,不用重新添加。大多数AWT构件都有多种构造方法,Label类中定义了三种。Label()构造一个空的标识。<br>
    Label(String)构造建立一个以String为内容的标识。<br>
    Label(String,int)定义一个String标识。这里int参数代表一个给定的对齐方式。可以是靠左、靠右和居中,缺省设置是居中。为了便于记忆,在Label类中定义了相应的常量,Label.LEFT、Label.CENTER和Label.RIGHT。因此要定义一个居中的Name标识,可以写成,<br>
    Label l1 = new Label(*Name*, Label.CENTER);<br>
    或 Label l1 = new Label(*Name*);<br>
    上面是Label的定义方法,在定义之后,我们要用add方法将它添加到屏幕上,否则它还不会显示在屏幕上。需要强调的是,所有的AWT构件的使用过程都是这样的。<br>
    add(l1);<br>
    或者直接写成<br>
    add(new Label(*Name*);<br>
    这两种方法的区别在于,如果这个标识不再需要修改,可以直接添加,如果还需要修改,应当先定义一个Label类,再添加。<br>
    2. 按钮(Button)<br>
    按钮是用户界面中常用的元素。Button类有两种构造方法:<br>  
  Button()方法构造一个没有标识的按钮。<br>  
  Button(String)方法构造一个以String为标识的按钮。<br>  
  如果要定义一个“OK”按钮,定义方法如下:<br>  
  Button b = new Button(*OK*);<br>  
  add(b);<br>  
  或 add ( new Button(*OK*));<br>  
  3. 画布(Canvas)<br>  
  画布是专门用来绘画的构件,它不能包含其它的构件。Canvas类的使用也相当简单。<br>  
  Canvas canv = new Canvas();<br>  
  add (canv);<br>  
  Canvas类中的方法也只有一个paint方法,这在上一章已介绍过了,这里就不重复了。<br>  
  4. 复选框(Checkbox)<br>  
  Checkbox类一般不需要定义相应的操作,它只是用来让用户设置某些选项。Checkbox类可以有两种使用方式。一种是一次可以选择多项,即复选框。另一种是一次只能选择一项,即单选按钮。这里介绍的是复选框,单选按钮另外介绍。Checkbox类的构造方法有三种。<br>  
  Checkbox()构造一个空的复选框条目,未被选中。<br>  
  Checkbox(String)构造一个以String为标识的复选框条目,未被选中。<br>  
  Checkbox(String, CheckboxGroup,boolean)构造一个以String为标识的复选框条目。这里的CheckboxGroup参数是指出这个条目所属的条目组,只有单选按钮才需要条目组,所以在这里可以用null,boolean参数是设置这个条目是否预先被选中,true是选中,false是未选中。所以如果需要将某个条目设置成预先选中的话,必须用这个构造方法。<br>  
  下面是个建立复选框的例子。效果如图5-2。<br>  
  add(new Label("What are you like: "));<br>  
  add(new Checkbox("Apple "));<br>  
  add(new Checkbox("orange "));<br>  
  add(new Checkbox("Strawberry "));<br>  
  add(new Checkbox("Peach "));</p>
<p>  <IMG height=28 src="tu5-2.gif" width=386></p>
<p>  图5-2 复选框<br>  
  5. 单选按钮(Radio Buttons)<br>  
  单选按钮的使用方法与复选框使用方法基本相同,所不同的是所有条目必须属于一个条目组,在这个条目组中,一次只能选择一个条目。CheckboxGroup类的构造方法是:CheckboxGroup()构造一个条目组。在构造完一个条目组,就可以把条目加入到这个条目组中。在加入条目时,不要忘记只有一个条目能被预先选中。下面是一个例子,图5-3是这段程序的运行结果。<br>  
  add(new Label("Sex: "));<br>  
  CheckboxGroup cbg = new CheckboxGroup();<br>  
  add(new Checkbox("Male ", cbg, true));<br>  
  add(new Checkbox("Female ", cbg, false));</p>
<p>  <IMG height=29 src="tu5-3.gif" width=159></p>
<p>  图5-3 单选按钮<br>  
  6. 选择菜单(Choice Menu)<br>  
  选择菜单是指弹出式菜单,用户可以在菜单的条目中进行选择。选择菜单在Java中是由Choice类实现的。Choice类的构造方法是:<br>  
  Choice()构造一个选择菜单。<br>  
  构造完之后,再使用Choice类中的addItem方法加入菜单的条目。条目在菜单中的位置由条目添加的顺序决定,Choice类建立一个整数索引以便于检索。下面是一个较为完整的例子。<br>  
  add(new Label("How much do you eat them per week: "));<br>  
  Choice c = new Choice();<br>  
  c.addItem("less than 1kg ");<br>  
  c.addItem("1kg to 3kg");<br>  
  c.addItem("more than 3kg"); <br>  
  add(c);<br>  
  再加入条目之后,不要忘记所做的这些只是定义了一个选择菜单,还需要用add方法把选择菜单添加到屏幕上。此外,在菜单被添加到屏幕上,仍可以加入新的条目。这些语句的执行结果如下。</p>
<p>  <IMG height=85 src="tu5-4.gif" width=322></p>
<p>  图5-4 选择菜单<br>  
  7. 列表框(Scrolling List)<br>  
  列表框的功能与弹出式菜单相似,也是让用户在几个条目中作出选择,但又有一些区别。列表框是由List类实现的,List类的构造方法有两种。<br>  
  List()构造一个空的列表框。<br>  
  List(int, boolean)构造一个指定行数的列表框。int类型参数为指定的行数,boolean类型参数确定这个列表是多选还是单选。true表示多选,false表示单选。与Choice类相同,在构造一个List类后,也要用addItem方法添加列表中的条目。在添加条目的同时,也会建立一个整数索引。让我们来看一个例子。<br>  
  add(new Label("What are you like: "));<br>  
  List list = new List(5,true);<br>  
  list.addItem("Apple"); <br>  
  list.addItem("Banana"); <br>  
  list.addItem("Grape"); <br>  
  list.addItem("Orange"); <br>  
  list.addItem("Peach"); <br>  
  list.addItem("Pear"); <br>  
  list.addItem("Strawberry"); <br>  
  add(list);<br>  
  这个例子和上面复选框的例子内容相同,只是换了一种实现方法。<br>  
  图5-5 是执行后的结果。</p>
<p>  <IMG height=98 src="tu5-5.gif" width=211></p>
<p>  图5-5 列表框<br>  
  通过这个例子,可以看出列表框与选择菜单的区别。首先,它不是弹出式的菜单,而是列表,如果条目的数目超过列表的大小,会自动出现滚动条。其次,列表框可以是单选的,也可以是多选的。List类中可以调用的方法有:<br>  
  8. 单行文本输入框(TextField)<br>  
  在许多情况下,用户可能还需要输入一些文字,这时就需要文本输入框。单行文本输入框是由TextField类实现的。TextField类的构造方法有四种。<br>  
  TextField()构造一个新的单行文本输入框、TextField(int)构造一个指定长度的单行文本输入框。<br>  
  TextField(String)构造一个指定初始内容的单行文本输入框。<br>  
  TextField(String, int)构造一个指定长度、指定初始内容的单行文本输入框。<br>  
  下面是一个使用单行文本输入框的例子。图5-6是执行后的结果。<br>  
  add(new Label("Your name: ")); <br>  
  add(new TextField(30)); </p>
<p>  <IMG height=33 src="tu5-6.gif" width=291></p>
<p>  图5-6 单行文本输入框<br>  
  在某种情况下,用户可能希望自己的输入不被别人看到,这时可以用TextField类中setEchoCharacter方法设置回显字符,使用户的输入全部以某个特殊字符显示在屏幕上。下面是TextField类中可以调用的方法:<br>  
  9. 多行文本输入框(TextArea)<br>  
  多行文本输入框的功能与单行文本输入框的功能相同,只是它能显示更多的文字。因为单行文本输入框只能输入一行的文字,所以在需要输入和显示较多的文字时,就要用到多行文本输入框。多行文本输入框是由TextArea类实现的。TextArea类的构造方法有四种。<br>  
  TextArea()构造一个新的多行文本输入框。<br>  
  TextArea(int, int)构造一个指定长度和宽度的多行文本输入框。<br>  
  TextArea(String)构造一个显示指定文字的多行文本输入框。 <br>  
  TextArea(String, int, int)构造一个指定长度、指定宽度,并显示指定文字的多行文本输入框。下面是一个多行文本输入框的例子,图5-7是执行后的结果。<br>  
  add(new Label("What's your opnion of eating fruit: ")); <br>  
  add(new TextArea("I think ",3,60)); </p>
<p>  <IMG height=105 src="tu5-7.gif" width=390></p>
<p>  图5-7 多行文本输入框<br>  
  10.滚动条(Scrollbar)<br>  
  在列表框和多行文本输入框中,在需要时会自动加入滚动条。在某些情况下,特别是关于数字的操作时,需要单独使用滚动条。滚动条是由Scrollbar类实现的。Scrollbar类的构造方法有三种。<br>  
  Scrollbar()构造一个新的垂直的滚动条。<br>  
  Scrollbar(int)构造一个指定方向的滚动条<br>  
  Scrollbar(int, int, int, int, int)根据给定参数构造一个滚动条。其中第一个参数指定滚动条的方向。第二个参数指定滑动块的初始位置。第三个参数指定滚动条的宽度。第四、第五个参数是滚动条的最小值和最大值。在Scrollbar类中,定义了两个常量HORIZONTAL和VERTICAL,在指定滚动条的方向时可以使用这两个常量。<br>  
  11. 一个例子<br>  
  现在,我们可以尝试把上面介绍的这些内容组合在一起,做一个较为复杂的例子。<br>  
  1: import java.awt.*;<br>  
  2: <br>  
  3: public class ui extends java.applet.Applet {<br>  
  4: <br>  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -