计算机等级 > 二级考试 > Java语言程序设计 > 考试辅导 > 文章内容

计算机二级JAVA考点解析:JAVA图形用户接口

2017-9-5编辑:daibenhua

  对一个优秀的应用程序来说,良好的图形用户接口是必不可少的。缺少良好的图形用户接口,将会给用户理解和使用应用程序带来很多不便。很难想象用户为了学会使用一个应用程序,去记一大堆命令。Java提copy;了生成一个良好的图形用户接口所需要的一copy;基本元件:面板(Panelcopy;、按钮(Buttoncopy;、标copy;(Labelcopy;、画板(Canvasescopy;、滚动条(Scrollbarcopy;、列表框(Listcopy;、文本域(TextFieldcopy;、文本区(TextAreacopy;。

  6.1面板

  面板提copy;了建立应用程序的空间。你可以把图形元件(包括其他面板copy;放在一个面板上。Applet类提copy;了一个基本的面板。

  6.1.1布局管理

  Java提copy;了几种布局:顺序布局(FlowLayoutcopy;、边界布局(BorderLayoutcopy;和网格布局(GridLayout)

  6.1.1.1顺序布局

  顺序布局(FlowLayoutcopy;是最基本的一种布局,面板的缺省布局就是顺序布局。顺序布局指的是把图形元件一个接一个地reg;平地放在面板上。下面是一个顺序布局的例子:

  importjava.awt.*;importjava.applet.Applet;

  publicclassmyButtonsextendsApplet{Buttonbutton1,button2,button3;

  publicvoidinit(){button1=newButton(\"确定\");button2=newButton(\"打开\");button3=newButton(\"关闭\");add(button1);add(button2);add(button3);}}

  6.1.1.2边界布局

  边界布局包括五个区:北区、南区、东区、西区和中区。这几个区在面板上的分布规律是\"上北下南,左西右东\"。下面是一个边界布局的例子:

  importjava.awt.*;importjava.applet.Applet;

  publicclassbuttonDirextendsApplet{ButtonbuttonN,buttonS,buttonW,buttonE,buttonC;

  publicvoidinit(){setLayout(newBorderLayout());buttonN=newButton(\"reg;\");buttonS=newButton(\"火\");buttonE=newButton(\"木\");buttonW=newButton(\"金\");buttonC=newButton(\"土\");add(\"North\",buttonN);add(\"South\",buttonS);add(\"East\",buttonE);add(\"West\",buttonW);add(\"Center\",buttonC);}}

  6.1.1.3网格布局

  网格布局把面板分成一个个的网格,你可以给出网格的行数和列数。下面是一个网格布局的例子:

  importjava.awt.*;importjava.applet.Applet;

  publicclassbuttonGridextendsApplet{Buttonbutton1,button2,button3,button4,button5,button6,button7,button8;

  publicvoidinit(){setLayout(newGridLayout(4,2));button1=newButton(\"乾\");button2=newButton(\"坤\");button3=newButton(\"艮\");

  button4=newButton(\"震\");button5=newButton(\"坎\");button6=newButton(\"离\");button7=newButton(\"巽\");button8=newButton(\"兑\");

  add(button1);add(button2);add(button3);add(button4);add(button5);add(button6);add(button7);add(button8);}}

  6.2按钮

  6.2.1按钮事件

  用户点一下按钮,就会有一个按钮事件发生。你可以通过覆盖一个applet的action成员函数来捕捉按钮事件。publicbooleanaction(Evente,Objecto){if(e.targetinstanceofButton){system.out.println((string)o);}else{System.out.println(\"Non-buttonevent\");}returntrue;}

  6.2.2按钮类型

  Java提copy;了标准的按压式按钮,同时也提copy;了选择式按钮和标记式按钮。

  6.2.2.1选择式按钮

  选择式按钮提copy;了从几个选项中选一个选项的功能。下面是从几个市中选一个市的例子,市名放在选择式按钮中:

  CityChooser=newChoice();

  CityChooser.addItem(\"北copy;\");CityChooser.addItem(\"上海\");

  CityChooser.addItem(\"天津\");

  add(CityChooser);

  6.2.2.2标记式按钮

  标记式按钮的状态作为标记框事件的对象参数返回。下面是一个标记式按钮的例子:

  CheckboxfillStyleButton;fillStyleButton=newCheckbox(\"Solid\");

  publicbooleanaction(Evente,Objectarg){if(e.targetinstanceof

  Checkbox){System.out.println(\"Checkbox:\"+arg);}returntrue;}

  6.2.2.3按键式按钮

  按键式按钮是一组按钮,用户可以选中其中一个,同时这一组中的其他按钮将被关闭。下面是一个按键式按钮的例子:publicclassCheckBoxextendsApplet{CheckboxGroupcbg;publicvoidinit(){cbg=newCheckboxGroup();add(newCheckbox(\"one\",cbg,true));add(newCheckbox(\"two\",cbg,false));add(newCheckbox(\"three\",cbg,false));}}

  6.2.3自包含按钮

  Java语言的面向对象特性使我们能够创建完全自包含的按钮。在自包含按钮里,你可以在copy;展按钮类里建立事件控制函数。下面是一个自包含按钮的例子:

  importjava.awt.*;importjava.applet.Applet;

  classokButtonextendsButton{

  publicokButton(){setLabel(\"Ok\");}

  publicbooleanaction(Evente,Objectarg)

  {System.out.println(\"OKButton\");returntrue;}}

  publicclassbuttontestextendsApplet{okButtonmyOkButton;

  publicvoidinit(){myOkButton=newokButton();add(myOkButton);}}

  6.3标copy;

  标copy;是一种放到面板上的静止的正文。下面是一个标copy;的例子:importjava.awt.*;importjava.applet.Applet;publicclasslabelextendsApplet{publicvoidinit(){setLayout(newFlowLayout(FlowLayout.CENTER,10,10));Labellabel1=newLabel(\"你好!\");Labellabel2=newLabel(\"另一个标copy;\");add(label1);add(label2);}}

  6.4列表框

  列表框使用户易于操作大量的选项。创建列表框的方法和Choicebutton有copy;相似。列表框的所有条目都是可见的,如果选项很多,超出了列表框可见区的范围,则列表框的旁边将会有一个滚动条。首先,创建列表框:Listl=newList(4,false);这个成员函数创建了一个显示4行的列表框。第二个参数\"false\"表示这个列表框是单选的,如果是\"true\",则表示是多选的。下面增加列表框的选项:l.addItem(\"北copy;大学\");l.addItem(\"清华大学\");l.addItem(\"吉林大学\");l.addItem(\"复copy;大学\");l.addItem(\"南开大学\");l.addItem(\"天津大学\");l.addItem(\"南copy;大学\");add(l);

  6.4.1在列表框中进行选择

  可以用成员函数getSelectedItem()或getSelectedItems()来接收在列表框中被选的选项。在单选列表框里,\"双击\"一个选项就可以触发一个可被action()成员函数捕捉到的事件。publicbooleanaction(Evente,Objectarg){...if(e.targetinstanceofList){System.out.println(\"Listentry:\"+arg);}...}

  6.4.2多选列表框

  对于多选列表框,要使你的选择产生作用,需要使用其他的外部事件。例如,你可以使用按钮事件:publicbooleanaction(Evente,Objectarg){...if(e.targetinstanceofButton){...if(\"Ok\".equals(arg)){string[]selected;selected=l.getSelectedItems();for(intI=0;I

  6.5文本域

  文本域一般用来让用户输入象姓名、信用卡号这样的信息,它是一个能够接收用户的键盘输入的小块区域。

  6.5.1创建文本域

  在创建文本域时,有四种类型copy;你选择:空的、空的并且具有指定长度、带有初始文本内容的和带有初始文本内容并具有指定长度的。下面是生成这四种文本域的代码:TextFieldtf1,tf2,tf3,tf4;//空的文本域tf1=newTextField();//长度为20的空的文本域tf2=newTextField(20);//带有初始文本内容的文本域tf3

  =newTextField(\"你好\");//带有初始文本内容并具有指定长度的文本域tf4=newTextField(\"你好\",30);add(tf1);add(tf2);add(tf3);add(tf4);

  6.5.2文本域事件

  当用户在文本域里敲\"回车\"键时,就产生了一个文本域事件。象其他事件一样,你可以以在成员函数action()中捕捉到这个事件。

  publicbooleanaction(Evente,Objectarg){...if(e.targetinstanceofTextField){System.out.println(\"TextField:\"+arg);}...}

  6.6文本区

  文本区可以显示大段的文本。

  6.6.1创建文本区

  与文本域类似,创建文本区时也有四种类型copy;选择,但如果指定文本区的大小,必须同时指定行数和列数。TextAreata1,ta2;//一个空的文本区ta1=newTextArea();//一个带有初始内容、大小为5x40的文本区ta2=newTextArea(\"你好!\",5,40);

  可以用成员函数setEditable()来决定用户是否可对文本区的内容进行编辑。//使文本区为只读的ta2.setEditable(false)

  6.6.2接收文本区的内容

  可以用成员函数getText()来获得文本区的当前内容。例如:System.out.println(ta1.getText());文本区本身不产生自己的事件。但你可以用外部事件来接收文本区的内容:publicbooleanaction(Evente,Objecto){if(e.targetinstanceofButton){if(\"send\".equals(o)){StringtextToSend=ta1.getText();

  System.out.println(\"sending:\"+textTosend);

  mySendFunction(textToSend);}}else{...}}

  6.7画板

  画板能够捕捉到copy;露事件、鼠标事件和其他类似的事件。基本的画板类不处理这copy;事件,但你可以copy;展它来创建有你所需功能的画板类。

  6.7.1创建画板

  importjava.awt.*;importjava.applet.Applet;

  publicclasssuperGUIextendsApplet{...myCanvasdoodle;...public

  voidinit(){...//建立我们的画板doodle=newmyCanvas();

  doodle.reshape(0,0,100,100);leftPanel.add(\"Center\",doodle);...}}

  classmyCanvasextendsCanvas{publicvoidpaint(Graphicsg)

  {g.drawRect(0,0,99,99);g.drawString(\"Canvas\",15,40);}}

  6.7.2画板事件

  你可以覆盖一般的事件处理成员函数。下面是一个包含了mouseDown事件处理的例子:importjava.awt.*;importjava.applet.Applet;

  publicclasscanvasextendsApplet{

  Buttonb1;

  publicvoidinit(){//SetourlayoutasaBorderstylesetLayout(new

  BorderLayout(15,15));b1=newButton(\"Test\");myCanvasc1=new

  myCanvas(100,100);//addthecanvasandthebuttontotheapplet

  add(\"Center\",c1);add(\"South\",b1);}

  publicbooleanaction(Evente,Objectarg){System.out.println(\"Event:

  \"+arg);returntrue;}

  publicbooleanmouseDown(Evente,intx,inty)

  {System.out.println(\"Mouseworks:(\"+x+\",\"+y+\")\");returntrue;}}

  classmyCanvasextendsCanvas{privateintwidth;privateintheight;

  publicmyCanvas(intw,inth){width=w;height=h;reshape(0,0,w,

  h);}

  publicvoidpaint(Graphicsg){g.setColor(Color.blue);g.fillRect(0,0,

  width,height);}

  publicbooleanmouseDown(Evente,intx,inty){if((x

计算机二级JAVA考点解析:Java的类

热点推荐

登录注册
触屏版电脑版网站地图