Java图形用户接口.docx
- 文档编号:9397166
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:16
- 大小:18.94KB
Java图形用户接口.docx
《Java图形用户接口.docx》由会员分享,可在线阅读,更多相关《Java图形用户接口.docx(16页珍藏版)》请在冰豆网上搜索。
Java图形用户接口
Java图形用户接口
对一个优秀的应用程序来说,良好的图形用户接口是必不可少的。
缺少良好的图形用户接口,将会给用户理解和使用应用程序带来很多不便。
很难想象用户为了学会使用一个应用程序,去记一大堆命令。
Java提供了生成一个良好的图形用户接口所需要的一切基本元件:
面板(Panel)按钮(Button?
标↙abel?
画板(Canvases?
滚动条(Scrollbar?
列表框(List?
文本域(TextField?
文本区(TextArea?
1面板
面板提?
了建立应用程序的空间。
你可以把图形元件(包括其他面板?
放在一个面板上。
Applet类提?
了一个基本的面板。
1.1布局管理
Java提?
了几种布局:
顺序布局(FlowLayout?
边界布局(BorderLayout?
和网格布局(GridLayout?
1.1.1顺序布局
顺序布局(FlowLayout?
是最基本的一种布局,面板的缺省布局就是顺序布局。
顺序布局指的是把图形元件一个接一个地?
平地放在面板上。
下面是一个顺序布局的例子:
importjava.awt.*;
importjava.applet.Applet;
publicclassmyButtonsextendsApplet{
Buttonbutton1,button2,button3;
publicvoidinit(){
button1=newButton("确定");
button2=newButton("打开");
button3=newButton("关闭");
add(button1);
add(button2);
add(button3);
}
}
该程序生成的布局如下:
图9.1
1.1.2边界布局
边界布局包括五个区:
北区、南区、东区、西区和中区。
这几个区在面板上的分布规律是“上北下南,左西右东”。
下面是一个边界布局的例子:
importjava.awt.*;
importjava.applet.Applet;
publicclassbuttonDirextendsApplet{
ButtonbuttonN,buttonS,buttonW,buttonE,buttonC;
publicvoidinit(){
setLayout(newBorderLayout());
buttonN=newButton("水");
buttonS=newButton("火");
buttonE=newButton("木");
buttonW=newButton("金");
buttonC=newButton("土");
add("North",buttonN);
add("South",buttonS);
add("East",buttonE);
add("West",buttonW);
add("Center",buttonC);
}
}
下面是该程序运行的结果:
图9.2
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);
}
}
下面是该程序运行的结果:
图9.3
2按钮
2.1按钮事件
用户点一下按钮,就会有一个按钮事件发生。
你可以通过重载一个applet的action成员函数来捕捉按钮事件。
publicbooleanaction(Evente,Objecto){
if(e.targetinstanceofButton){
System.out.println((string)o);}
else{
System.out.println("Non-buttonevent");}
returntrue;
}
2.2按钮类型
Java提?
了标准的按压式按钮,同时也提?
了选择式按钮和标记式按钮。
2.2.1选择式按钮
选择式按钮提?
了从几个选项中选一个选项的功能。
下面是从几个市中选一个市
的例子,市名放在选择式按钮中:
CityChooser=newChoice();
CityChooser.addItem("北京");
CityChooser.addItem("上海");
CityChooser.addItem("天津");
add(CityChooser);
图9.4
2.2.2标记式按钮
标记式按钮的状态作为标记框事件的对象参数返回。
下面是一个标记式按钮的例子:
CheckboxfillStyleButton;
fillStyleButton=newCheckbox("Solid");
publicbooleanaction(Evente,Objectarg){
if(e.targetinstanceofCheckbox){
System.out.println("Checkbox:
"+arg);}
Returntrue;
}
图9.5
2.2.3按键式按钮
按键式按钮是一组按钮,用户可以选中其中一个,同时这一组中的其他按钮将被关闭。
下面是一个按键式按钮的例子:
publicclassCheckBoxextendsApplet{
CheckboxGroupcbg;
publicvoidinit(){
cbg=newCheckboxGroup();
add(newCheckbox("one",cbg,true));
add(newCheckbox("two",cbg,false));
add(newCheckbox("three",cbg,false));
}
}
图9.6
2.3自包含按钮
Java语言的面向对象特性使我们能够创建完全自包含的按钮。
在自包含按钮里,你可以在?
展按钮类里建立事件控制函数。
下面是一个自包含按钮的例子:
importjava.awt.*;
importjava.applet.Applet;
classokButtonextendsButton{
publicokButton(){
setLabel("Ok");
}
publicbooleanaction(Evente,Objectarg){
System.out.println("OKButton");
returntrue;
}
}
publicclassbuttontestextendsApplet{
okButtonmyOkButton;
publicvoidinit(){
myOkButton=newokButton();
add(myOkButton);
}
}
图9.7
3标签
标签是一种放到面板上的静止的正文。
下面是一个标?
的例子:
importjava.awt.*;
importjava.applet.Applet;
publicclasslabelextendsApplet{
publicvoidinit(){
setLayout(newFlowLayout(FlowLayout.CENTER,10,10));
Labellabel1=newLabel("你好!
");
Labellabel2=newLabel("另一个标签");
add(label1);
add(label2);
}
}
下面是运行结果:
图9.8
4列表框
列表框使用户易于操作大量的选项。
创建列表框的方法和Choicebutton有?
相似。
列表框的所有条目都是可见的,如果选项很多,超出了列表框可见区的范围,则列表框的旁边将会有一个滚动条。
首先,创建列表框:
Listl=newList(4,false);这个成员函数创建了一个显示4行的列表框。
第二个参数“false"表示这个列表框是单选的,如果是“true",则表示是多选的。
下面增加列表框的选项:
l.addItem("北京大学");
l.addItem("清华大学");
l.addItem("吉林大学");
l.addItem("复旦大学");
l.addItem("南开大学");
l.addItem("天津大学");
l.addItem("南京大学");
add(l);
图9.9
4.1在列表框中进行选择
可以用成员函数getSelectedItem()或getSelectedItems()来接收在列表框中被选的选项。
在单选列表框里,“双击”一个选项就可以触发一个可被action()成员函数捕捉到的事件。
publicbooleanaction(Evente,Objectarg){
...
if(e.targetinstanceofList){
System.out.println("Listentry:
"+arg);
}
...
}
4.2多选列表框
对于多选列表框,要使你的选择产生作用,需要使用其他的外部事件。
例如,你可以使用按钮事件:
图9.10
publicbooleanaction(Evente,Objectarg){
...
if(e.targetinstanceofButton){
...
if("Ok".equals(arg)){
string[]selected;
selected=l.getSelectedItems();
for(intI=0;I System.out.println(selected[i]); } } } } 5文本域 文本域一般用来让用户输入象姓名、信用卡号这样的信息,它是一个能够接收用户的键盘输入的小块区域。 5.1创建文本域 在创建文本域时,有四种类型? 你选择: 空的、空的并且具有指定长度、带有初始文本内容的和带有初始文本内容并具有指定长度的。 下面是生成这四种文本域的代码: TextFieldtf1,tf2,tf3,tf4; //空的文本域 tf1=newTextField(); //长度为20的空的文本域 tf2=newTextField(20); //带有初始文本内容的文本域 tf3=newTextField("你好"); //带有初始文本内容并具有指定长度的文本域 tf4=newTextField("你好",30); add(tf1);add(tf2);add(tf3);add(tf4); 图9.11 5.2文本域事件 当用户在文本域里敲“回车”键时,就产生了一个文本域事件。 象其他事件一样,你可以以在成员函数action()中捕捉到这个事件。 publicbooleanaction(Evente,Objectarg){ ... if(e.targetinstanceofTextField){ System.out.println("TextField: "+arg); } ... } 6文本区 文本区可以显示大段的文本。 9.1创建文本区 与文本域类似,创建文本区时也有四种类型? 选择,但如果指定文本区的大小, 必须同时指定行数和列数。 TextAreata1,ta2; //一个空的文本区 ta1=newTextArea(); //一个带有初始内容、大小为5x40的文本区 ta2=newTextArea("你好! ",5,40); 可以用成员函数setEditable()来决定用户是否可对文本区的内容进行编辑。 //使文本区为只读的 ta2.setEditable(false) 图9.12 9.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{...} } 7画板 画板能够捕捉到? 露事件、鼠标事件和其他类似的事件。 基本的画板类不处理这 ? 事件,但你可以? 展它来创建有你所需功能的画板类。 7.1创建画板 importjava.awt.*; importjava.applet.Applet; publicclasssuperGUIextendsApplet{ ... myCanvasdoodle; ... publicvoidinit(){ ... //建立我们的画板 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); } } 7.2画板事件 你可以覆盖一般的事件处理成员函数。 下面是一个包含了mouseDown事件处理的例子: importjava.awt.*; importjava.applet.Applet; publicclasscanvasextendsApplet{ Buttonb1; publicvoidinit(){ //SetourlayoutasaBorderstyle setLayout(newBorderLayout(15,15)); b1=newButton("Test"); myCanvasc1=newmyCanvas(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 System.out.println("Canvasmouseworks: ("+x+","+y+")"); returntrue;} returnfalse; //NotourmouseDown } } 8滚动条 在某? 程序中,需要调整线性的值,这时就需要滚动条。 滚动条提? 了易于操作的值的范围或区的范围。 8.1创建滚动条 当创建一个滚动条时,必须指定它的方向、初始值、滑块的大小、最小值和最大值。 publicScrollbar(intorientation,intinitialValue,intsizeOfSlider,intminValue,intmaxValue); 下面是一个例子: ScrollbarredSlider; publicvoidinit(){ redSlider=newScrollbar(Scrollbar.VERTICAL,0,1,0,255); add(redSlider); } 图9.13 8.2滚动条事件 和其他接口元件一样,滚动条产生一个你可以控制的事件,但和其他事件不同, 你必须直接使用成员函数handleEvent(),而不能使用成员函数action(). publicbooleanhandleEvent(Evente){ if(e.targetinstanceofScrollbar){ System.out.println("Scrollbar: "+((Scrollbar)e.target).getValue()); returntrue; } returnsuper.handleEvent(e); } 8.3滚动条的值的显示 如果你想显示滑块所在位置的值,需要加一个自己的文本域。 下面是一个例子。 importjava.awt.*; importjava.applet.Applet; publicclassredSliderextendsApplet{ Scrollbarredslider; TextFieldredvalue; Labelredlabel; publicvoidinit(){ setLayout(newGridLayout(1,3)); redslider=newScrollbar(Scrollbar.HORIZONTAL,0,1,0,255); redvalue=newTextField("0",5); redvalue.setEditable(false); redlabel=newLabel("Red(0-255)"); add(redlabel); add(redslider); add(redvalue); } publicbooleanhandleEvent(Evente){ if(e.targetinstanceofScrollbar){ redvalue.setText(Integer.toString(((Scrollbar)e.target).getValue())); returntrue; } returnsuper.handleEvent(e); } publicbooleanaction(Evente,Objectarg){ System.out.println("Event"+arg); returntrue; } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 图形 用户 接口