當前位置:才華齋>計算機>java語言>

Java圖形使用者介面

java語言 閱讀(9.46K)

引導語:圖形使用者介面即顯示圖形和字元並提供使用者控制操作環境的事件模型的使用者介面。以下是本站小編分享給大家的Java圖形使用者介面,歡迎參考學習!

Java圖形使用者介面

 1.1面板

面板提copy;了建立應用程式的空間。你可以把圖形元件(包括其他面板copy;放在一個面板上。Applet類提copy;了一個基本的面板。

1.1.1佈局管理

Java提copy;了幾種佈局:順序佈局(FlowLayoutcopy;、邊界佈局(BorderLayoutcopy;和網格佈局(GridLayout)

 順序佈局

順序佈局(FlowLayoutcopy;是最基本的一種佈局,面板的預設佈局就是順序佈局。順序佈局指的是把圖形元件一個接一個地reg;平地放在面板上。下面是一個順序佈局的例子:

.*;et;

publicclassmyButtonsextendsApplet{Buttonbutton1,button2,button3;

publicvoidinit(){button1=newButton("確定");button2=newButton("開啟");button3=newButton("關閉");add(button1);add(button2);add(button3);}}

 邊界佈局

邊界佈局包括五個區:北區、南區、東區、西區和中區。這幾個區在面板上的分佈規律是"上北下南,左西右東"。下面是一個邊界佈局的例子:

.*;et;

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);}}

 網格佈局

網格佈局把面板分成一個個的網格,你可以給出網格的行數和列數。下面是一個網格佈局的例子:

.*;et;

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

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

button4=newButton("震");button5=newButton("坎");button1=newButton("離");button7=newButton("巽");button8=newButton("兌");

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

  1.2按鈕

  1.2.1按鈕事件

使用者點一下按鈕,就會有一個按鈕事件發生。你可以通過覆蓋一個applet的action成員函式來捕捉按鈕事件。publicbooleanaction(Evente,Objecto){if(etinstanceofButton){tln((string)o);}else{tln("Non-buttonevent");}returntrue;}

  1.2.2按鈕型別

Java提copy;了標準的按壓式按鈕,同時也提copy;了選擇式按鈕和標記式按鈕。

 選擇式按鈕

選擇式按鈕提copy;了從幾個選項中選一個選項的功能。下面是從幾個市中選一個市的例子,市名放在選擇式按鈕中:

CityChooser=newChoice();

tem("北copy;");tem("上海");

tem("天津");

add(CityChooser);

標記式按鈕

標記式按鈕的狀態作為標記框事件的物件引數返回。下面是一個標記式按鈕的例子:

CheckboxfillStyleButton;fillStyleButton=newCheckbox("Solid");

publicbooleanaction(Evente,Objectarg){if(etinstanceof

Checkbox){tln("Checkbox:"+arg);}returntrue;}

按鍵式按鈕

按鍵式按鈕是一組按鈕,使用者可以選中其中一個,同時這一組中的其他按鈕將被關閉。下面是一個按鍵式按鈕的例子:publicclassCheckBoxextendsApplet{CheckboxGroupcbg;publicvoidinit(){cbg=newCheckboxGroup();add(newCheckbox("one",cbg,true));add(newCheckbox("two",cbg,false));add(newCheckbox("three",cbg,false));}}

 1.2.3自包含按鈕

Java語言的面向物件特性使我們能夠建立完全自包含的按鈕。在自包含按鈕裡,你可以在copy;展按鈕類裡建立事件控制函式。下面是一個自包含按鈕的例子:

.*;et;

classokButtonextendsButton{

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

publicbooleanaction(Evente,Objectarg)

{tln("OKButton");returntrue;}}

publicclassbuttontestextendsApplet{okButtonmyOkButton;

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

 1.3標copy;

標copy;是一種放到面板上的靜止的正文。下面是一個標copy;的例子:.*;et;publicclasslabelextendsApplet{publicvoidinit(){setLayout(newFlowLayout(ER,10,10));Labellabel1=newLabel("你好!");Labellabel2=newLabel("另一個標copy;");add(label1);add(label2);}}

 1.4列表框

列表框使使用者易於操作大量的選項。建立列表框的方法和Choicebutton有copy;相似。列表框的所有條目都是可見的,如果選項很多,超出了列表框可見區的範圍,則列表框的旁邊將會有一個滾動條。首先,建立列表框:Listl=newList(4,false);這個成員函式建立了一個顯示4行的列表框。第二個引數"false"表示這個列表框是單選的,如果是"true",則表示是多選的。下面增加列表框的選項:tem("北copy;大學");tem("清華大學");tem("吉林大學");tem("復copy;大學");tem("南開大學");tem("天津大學");tem("南copy;大學");add(l);

 1.4.1在列表框中進行選擇

可以用成員函式getSelectedItem()或getSelectedItems()來接收在列表框中被選的選項。在單選列表框裡,"雙擊"一個選項就可以觸發一個可被action()成員函式捕捉到的事件。publicbooleanaction(Evente,Objectarg){(etinstanceofList){tln("Listentry:"+arg);}...}

 1.4.2多選列表框

對於多選列表框,要使你的選擇產生作用,需要使用其他的外部事件。例如,你可以使用按鈕事件:publicbooleanaction(Evente,Objectarg){(etinstanceofButton){("Ok"ls(arg)){string[]selected;selected=electedItems();for(intI=0;I

 1.5文字域

文字域一般用來讓使用者輸入象姓名、信用卡號這樣的資訊,它是一個能夠接收使用者的鍵盤輸入的小塊區域。

 1.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);

  1.5.2文字域事件

當用戶在文字域裡敲"回車"鍵時,就產生了一個文字域事件。象其他事件一樣,你可以以在成員函式action()中捕捉到這個事件。

publicbooleanaction(Evente,Objectarg){(etinstanceofTextField){tln("TextField:"+arg);}...}

 1.1文字區

文字區可以顯示大段的文字。

1.1.1建立文字區

與文字域類似,建立文字區時也有四種類型copy;選擇,但如果指定文字區的大小,必須同時指定行數和列數。TextAreata1,ta2;//一個空的文字區ta1=newTextArea();//一個帶有初始內容、大小為5x40的文字區ta2=newTextArea("你好!",5,40);

可以用成員函式setEditable()來決定使用者是否可對文字區的內容進行編輯。//使文字區為只讀的ditable(false)

  1.1.2接收文字區的內容

可以用成員函式getText()來獲得文字區的當前內容。例如:tln(ext());文字區本身不產生自己的事件。但你可以用外部事件來接收文字區的內容:publicbooleanaction(Evente,Objecto){if(etinstanceofButton){if("send"ls(o)){StringtextToSend=ext();

tln("sending:"+textTosend);

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

  1.7畫板

畫板能夠捕捉到copy;露事件、滑鼠事件和其他類似的事件。基本的畫板類不處理這copy;事件,但你可以copy;展它來建立有你所需功能的畫板類。

 1.7.1建立畫板

.*;et;

publicclasssuperGUIextendsApplet{nvasdoodle;ic

voidinit(){...//建立我們的畫板doodle=newmyCanvas();

ape(0,0,100,100);("Center",doodle);...}}

classmyCanvasextendsCanvas{publicvoidpaint(Graphicsg)

{Rect(0,0,99,99);String("Canvas",15,40);}}

 1.7.2畫板事件

你可以覆蓋一般的事件處理成員函式。下面是一個包含了mouseDown事件處理的例子:.*;et;

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){tln("Event:

"+arg);returntrue;}

publicbooleanmouseDown(Evente,intx,inty)

{tln("Mouseworks:("+x+","+y+")");returntrue;}}

classmyCanvasextendsCanvas{privateintwidth;privateintheight;

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

h);}

publicvoidpaint(Graphicsg){olor();Rect(0,0,

width,height);}

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