本篇文章給大家分享的是有關如何理解Java圖形用戶接口,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

創新互聯-專業網站定制、快速模板網站建設、高性價比勃利網站開發、企業建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式勃利網站制作公司更省心,省錢,快速模板網站建設找我們,業務覆蓋勃利地區。費用合理售后完善,10多年實體公司更值得信賴。
對一個優秀的應用程序來說,良好的圖形用戶接口是必不可少的。缺少良好的圖形用戶接口,將會給用戶理解和使用應用程序帶來很多不便。很難想象用戶為了學會使用一個應用程序,去記一大堆命令。
面板提?copy;了建立應用程序的空間。你可以把圖形元件(包括其他面板?copy;放在一個面板上。Applet類提?copy;了一個基本的面板。
Java提?copy;了幾種布局:順序布局(FlowLayout?copy;、邊界布局(BorderLayout?copy;和網格布局(GridLayout?copy;。
順序布局(FlowLayout?copy;是最基本的一種布局,面板的缺省布局就是順序布局。順序布局指的是把圖形元件一個接一個地?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
邊界布局包括五個區:北區、南區、東區、西區和中區。這幾個區在面板上的分布規律是“上北下南,左西右東”。下面是一個邊界布局的例子:
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.2
網格布局把面板分成一個個的網格,你可以給出網格的行數和列數。下面是一個網格布局的例子:
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.3
用戶點一下按鈕,就會有一個按鈕事件發生。你可以通過覆蓋一個applet的action成員函數來捕捉按鈕事件。
publicbooleanaction(Evente,Objecto){if(e.targetinstanceofButton){system.out.println((string)o);}else{System.out.println("Non-buttonevent");}returntrue;}
Java提?copy;了標準的按壓式按鈕,同時也提?copy;了選擇式按鈕和標記式按鈕。
選擇式按鈕提?copy;了從幾個選項中選一個選項的功能。下面是從幾個市中選一個市的例子,市名放在選擇式按鈕中:
CityChooser=newChoice();
CityChooser.addItem("北?copy;");CityChooser.addItem("上海");CityChooser.addItem("天津");
add(CityChooser);
圖6.4
標記式按鈕的狀態作為標記框事件的對象參數返回。下面是一個標記式按鈕的例子:
CheckboxfillStyleButton;fillStyleButton=newCheckbox("Solid");
publicbooleanaction(Evente,Objectarg){if(e.targetinstanceofCheckbox){System.out.println("Checkbox:"+arg);}returntrue;}
圖6.5
按鍵式按鈕是一組按鈕,用戶可以選中其中一個,同時這一組中的其他按鈕將被關閉。下面是一個按鍵式按鈕的例子:publicclassCheckBoxextendsApplet{CheckboxGroupcbg;
publicvoidinit(){cbg=newCheckboxGroup();add(newCheckbox("one",cbg,true));add(newCheckbox("two",cbg,false));add(newCheckbox("three",cbg,false));}}
圖6.6
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.7
標?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.8
列表框使用戶易于操作大量的選項。創建列表框的方法和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.9
可以用成員函數getSelectedItem()或getSelectedItems()來接收在列表框中被選的選項。在單選列表框里,“雙擊”一個選項就可以觸發一個可被action()成員函數捕捉到的事件。publicbooleanaction(Evente,Objectarg){...if(e.targetinstanceofList){System.out.println("Listentry:"+arg);}...}
對于多選列表框,要使你的選擇產生作用,需要使用其他的外部事件。例如,你可以使用按鈕事件:
圖6.10
publicbooleanaction(Evente,Objectarg){...if(e.targetinstanceofButton){...if("Ok".equals(arg)){string[]selected;selected=l.getSelectedItems();for(intI=0;I<selected.length;I++){System.out.println(selected[i]);}}}}
文本域一般用來讓用戶輸入象姓名、信用卡號這樣的信息,它是一個能夠接收用戶的鍵盤輸入的小塊區域。
在創建文本域時,有四種類型?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.11
當用戶在文本域里敲“回車”鍵時,就產生了一個文本域事件。象其他事件一樣,你可以以在成員函數action()中捕捉到這個事件。
publicbooleanaction(Evente,Objectarg){...if(e.targetinstanceofTextField){System.out.println("TextField:"+arg);}...}
文本區可以顯示大段的文本。
與文本域類似,創建文本區時也有四種類型?copy;選擇,但如果指定文本區的大小,必須同時指定行數和列數。
TextAreata1,ta2;//一個空的文本區ta1=newTextArea();
//一個帶有初始內容、大小為5x40的文本區ta2=newTextArea("你好!",5,40);
可以用成員函數setEditable()來決定用戶是否可對文本區的內容進行編輯。
//使文本區為只讀的ta2.setEditable(false)
圖6.12
可以用成員函數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{...}}
畫板能夠捕捉到?copy;露事件、鼠標事件和其他類似的事件。基本的畫板類不處理這?copy;事件,但你可以?copy;展它來創建有你所需功能的畫板類。
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);}}
你可以覆蓋一般的事件處理成員函數。下面是一個包含了mouseDown事件處理的例子:
importjava.awt.*;importjava.applet.Applet;
publicclasscanvasextendsApplet{
Buttonb1;
publicvoidinit(){//SetourlayoutasaBorderstylesetLayout(newBorderLayout(15,15));b1=newButton("Test");myCanvasc1=newmyCanvas(100,100);//addthecanvasandthebuttontotheappletadd("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<width)&&(y<height)){System.out.println("Canvasmouseworks:("+x+","+y+")");returntrue;}returnfalse;//NotourmouseDown}}
在某?copy;程序中,需要調整線性的值,這時就需要滾動條。滾動條提?copy;了易于操作的值的范圍或區的范圍。
當創建一個滾動條時,必須指定它的方向、初始值、滑塊的大小、最小值和最大值。
publicScrollbar(intorientation,intinitialValue,intsizeOfSlider,intminValue,intmaxValue);
下面是一個例子:
ScrollbarredSlider;publicvoidinit(){redSlider=newScrollbar(Scrollbar.VERTICAL,0,1,0,255);add(redSlider);}
圖6.13
和其他接口元件一樣,滾動條產生一個你可以控制的事件,但和其他事件不同,你必須直接使用成員函數handleEvent(),而不能使用成員函數action().
publicbooleanhandleEvent(Evente){if(e.targetinstanceofScrollbar){System.out.println("Scrollbar:"+((Scrollbar)e.target).getValue());returntrue;}returnsuper.handleEvent(e);}
如果你想顯示滑塊所在位置的值,需要加一個自己的文本域。下面是一個例子。
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);redlable=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;}}
以上就是如何理解Java圖形用戶接口,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創新互聯行業資訊頻道。
                分享標題:如何理解Java圖形用戶接口
                
                轉載來源:http://www.yijiale78.com/article22/pchejc.html
            
成都網站建設公司_創新互聯,為您提供網站建設、網站制作、企業網站制作、App設計、外貿網站建設、手機網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯
