久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何理解Java圖形用戶接口

150次閱讀
沒有評論

共計 7747 個字符,預計需要花費 20 分鐘才能閱讀完成。

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

Java 圖形用戶接口

對一個優秀的應用程序來說,良好的圖形用戶接口是必不可少的。缺少良好的圖形用戶接口,將會給用戶理解和使用應用程序帶來很多不便。很難想象用戶為了學會使用一個應用程序,去記一大堆命令。

6.1 面板

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

6.1.1 布局管理

Java 提?copy; 了幾種布局:順序布局(FlowLayout?copy;、邊界布局(BorderLayout?copy; 和網格布局(GridLayout?copy;。

6.1.1.1 順序布局

順序布局(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

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.2

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.3

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.4

6.2.2.2 標記式按鈕

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

CheckboxfillStyleButton;fillStyleButton=newCheckbox(Solid

publicbooleanaction(Evente,Objectarg){if(e.targetinstanceofCheckbox){System.out.println( Checkbox: +arg);}returntrue;}

圖 6.5

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.6

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.7

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.8

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.9

6.4.1 在列表框中進行選擇

可以用成員函數 getSelectedItem() 或 getSelectedItems() 來接收在列表框中被選的選項。在單選列表框里,“雙擊”一個選項就可以觸發一個可被 action() 成員函數捕捉到的事件。publicbooleanaction(Evente,Objectarg){…if(e.targetinstanceofList){System.out.println( Listentry: +arg);}…}

6.4.2 多選列表框

對于多選列表框,要使你的選擇產生作用,需要使用其他的外部事件。例如,你可以使用按鈕事件:

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

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.11

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

// 一個帶有初始內容、大小為 5 ×40 的文本區 ta2=newTextArea(你好! ,5,40);

可以用成員函數 setEditable() 來決定用戶是否可對文本區的內容進行編輯。

// 使文本區為只讀的 ta2.setEditable(false)

圖 6.12

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

6.7.2 畫板事件

你可以覆蓋一般的事件處理成員函數。下面是一個包含了 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}}

6.8 滾動條

在某?copy; 程序中,需要調整線性的值,這時就需要滾動條。滾動條提?copy; 了易于操作的值的范圍或區的范圍。

6.8.1 創建滾動條

當創建一個滾動條時,必須指定它的方向、初始值、滑塊的大小、最小值和最大值。

publicScrollbar(intorientation,intinitialValue,intsizeOfSlider,intminValue,intmaxValue);

下面是一個例子:

ScrollbarredSlider;publicvoidinit(){redSlider=newScrollbar(Scrollbar.VERTICAL,0,1,0,255);add(redSlider);}

圖 6.13

6.8.2 滾動條事件

和其他接口元件一樣,滾動條產生一個你可以控制的事件,但和其他事件不同,你必須直接使用成員函數 handleEvent(),而不能使用成員函數 action().

publicbooleanhandleEvent(Evente){if(e.targetinstanceofScrollbar){System.out.println( Scrollbar: +((Scrollbar)e.target).getValue());returntrue;}returnsuper.handleEvent(e);}

6.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);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 圖形用戶接口,丸趣 TV 小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-25發表,共計7747字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 惠州市| 贵南县| 沁源县| 海南省| 沙雅县| 清徐县| 涟水县| 乡宁县| 平泉县| 泽库县| 林口县| 镇安县| 涟水县| 年辖:市辖区| 游戏| 永康市| 房山区| 通化市| 潢川县| 宣汉县| 锦州市| 永泰县| 西畴县| 科技| 佛坪县| 定襄县| 高碑店市| 滁州市| 逊克县| 金华市| 南昌市| 阿拉善左旗| 渝北区| 太和县| 新巴尔虎左旗| 黄骅市| 大方县| 泰州市| 襄垣县| 全南县| 岱山县|