JAVA程序設(shè)計(jì)技能教程第9章_第1頁
JAVA程序設(shè)計(jì)技能教程第9章_第2頁
JAVA程序設(shè)計(jì)技能教程第9章_第3頁
JAVA程序設(shè)計(jì)技能教程第9章_第4頁
JAVA程序設(shè)計(jì)技能教程第9章_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第9章圖形用戶界面設(shè)計(jì)

任務(wù)一:了解與圖形處理相關(guān)的包

任務(wù)三:掌握使用Swing組件進(jìn)行常用圖形界面設(shè)計(jì)

任務(wù)二:掌握J(rèn)avaApplet程序結(jié)構(gòu)及運(yùn)行

任務(wù)四:掌握掌握?qǐng)D形的繪制

任務(wù)五:實(shí)訓(xùn)九圖形界面編程綜合實(shí)訓(xùn)9.1任務(wù)一了解與圖形處理相關(guān)包

9.1.1java.awt包

圖9-1JavaAWT包Menu-PopupMenuCheckboxMenuItemjava.lang.ObjectBorderLayoutCardLayoutCheckboxGroupColorComponentDimensionEventFontFlowLayoutFontMetricsGraphicsGridBagConstraintsGridBagLayoutGridLayoutMenuComponentImageInsetsPointPolygonRectangleToolkitButtonCanvasCheckboxChoiceContainerLabelListScrollbarTextComponentPanelWindowScrollPaneAppletDialogFrameMenuBarMenuItemTextAreaTextField【例9-1】創(chuàng)建一個(gè)AWT窗體。import

java.awt.*;public

class

exa9_1

{

public

static

void

main(String

args[])

{

Frame

f=new

Frame("This

is

a

window!");

f.setLocation(100,200);

f.setSize(200,400);

f.setBackground(Color.red);

FlowLayout

fl=new

FlowLayout();

f.setLayout(fl);

Button

b1=new

Button("Ok!");

f.add(b1);

Button

b2=new

Button("Cancle!");

f.add(b2);

f.setVisible(true);

}}說明:(1)、任何基于AWT包的傳統(tǒng)窗體程序都必須導(dǎo)入相應(yīng)的AWT包以方便編程。(2)、對(duì)于默認(rèn)的新建窗體,其左上角總是對(duì)齊屏幕的左上角,大小只能顯示出標(biāo)題欄,所以,必須設(shè)置常見的用于顯示的屬性。(3)、對(duì)于默認(rèn)的新建窗體,并不直接顯示,要想使窗體顯示出來,必須設(shè)置visible屬性為真。(4)、構(gòu)造函數(shù)中的參數(shù)可以用于設(shè)置窗體的標(biāo)題,也可以使用setTitle()方法后設(shè)置。(5)、添加組件的方法add(Component),如:add(button1)。9.1.2java.swing包

圖9-2Swing包結(jié)構(gòu)圖【例9-2】創(chuàng)建一個(gè)Swing窗體。import

javax.swing.*;import

java.awt.*;public

class

exa9_2{

public

static

void

main(String

args[])

{

JFrame

f=new

JFrame("This

is

a

window!");

f.setLocation(100,200);

f.setSize(200,400);

FlowLayout

fl=new

FlowLayout();

f.getContentPane().setLayout(fl);

JButton[]

jb=new

JButton[10];

for(int

i=0;i<jb.length;i++)

{

jb[i]=new

JButton();

jb[i].setText(String.valueOf(i));

f.getContentPane().add(jb[i]);

}

f.setVisible(true);

}}請(qǐng)注意和上述awt窗體的異同點(diǎn):(1)、導(dǎo)入的包和AWT不一樣。(2)、swing組件類名稱和awt組件類名稱相比,往往都是多個(gè)大寫的“J”開頭。(3)、不再直接向窗體添加組件,而是通過內(nèi)容面板間接添加組件,所以,在添加組件的時(shí)候,需要取得當(dāng)前窗體的內(nèi)容面板。(4)、傳統(tǒng)AWT組件的一些方法不再鼓勵(lì)使用,相反,可以使用具有相似功能的新的方法,如按鈕的setLabel()方法被setText()取代,當(dāng)然,傳統(tǒng)方法仍然可以使用。(5)、在Swing引入setDefaultCloseOperation()之前,AWT關(guān)閉窗口必須使用程序監(jiān)視窗口,獲得相關(guān)操作并處理和做出響應(yīng)。9.1.3java.awt.event包

設(shè)計(jì)圖形用戶界面的目的是為了方便用戶與計(jì)算機(jī)進(jìn)行交流,比如當(dāng)用戶單擊命令按鈕時(shí),希望系統(tǒng)能完成一個(gè)動(dòng)作,實(shí)現(xiàn)某種功能,這些交互的功能是由后臺(tái)的事件處理接口來完成的,java.awt.event包就提供處理由AWT組件所激發(fā)的各類事件的接口和類。有關(guān)AWT事件模型的細(xì)節(jié),請(qǐng)參見java.awt.AWTEvent類。事件由事件源所激發(fā),向事件源注冊(cè)的事件偵聽器可接收有關(guān)特定事件類的通知,此包定義了事件和事件偵聽器,以及事件偵聽器適配器,它是讓事件偵聽器的編寫過程更為輕松的便捷類。

9.2任務(wù)二掌握javaApplet程序結(jié)構(gòu)及運(yùn)行

9.3.1Applet類及相關(guān)方法

1.Applet程序的工作原理網(wǎng)絡(luò)瀏覽器HTML文件:……………...嵌入Applet………………………………..網(wǎng)絡(luò)服務(wù)器瀏覽網(wǎng)頁下載Applet字節(jié)碼圖9-4Applet工作原理

2.Applet類中的主要方法:

(1)、publicvoidinit()

(2)、publicvoidstart()(3)、publicvoidstop()

(4)、publicvoiddestroy()(5)、publicvoidpaint(Graphicsg)9.2.2Applet程序建立及運(yùn)行過程

1.源程序的編輯與編譯2.代碼嵌入3.Applet的運(yùn)行

9.3任務(wù)三掌握使用Swing組件進(jìn)行常用圖形界面設(shè)計(jì)Swing組件類型很多,按功能分類如下:(1)、頂層容器:有JFrame(框架),JWindow(窗體),JDialog(對(duì)話框)和JApplet(小應(yīng)用程序)。它們屬于swing中的四個(gè)重量級(jí)組件。頂層容器的重要性在于,除了Menubar所有的GUI組件都需要被包含在頂層容器的一個(gè)默認(rèn)容器ContentPane中。(2)、中間容器(又叫簡單容器):有JPanel(面板),JSplitPane(拆分面板),JToolBar(工具欄),JScrollPane(滾動(dòng)面板)和JTabbedPane(頁簽式面板)等。中間容器介于頂層容器與一般組件之間,是用來裝別的組件用的,它是要被添加在頂層容器中的,能夠使被它承載的組件能合適地、有組織地呈現(xiàn)出來。(3)、特殊容器:有JLayeredPanel、JRootPaneInternalFrame等,它們也是中間容器,但有著特殊的作用。(4)、基本組件:組件是一個(gè)可以以圖形化的方式顯示在屏幕上并能與用戶進(jìn)行交互的對(duì)象,例如JButton,JLabel,JList等,是最基本圖形用戶界面的組成部分。9.3.1窗口容器類JFrame使用

1.窗口類容器Swing提供了四個(gè)在屏幕上顯示窗口的組件:JWindow、JFrame、JApplet和JDialog。這四個(gè)組件統(tǒng)稱為頂層組件,它們相互之間的區(qū)別不明顯,因?yàn)槠溆嗟膕wing組件都必須依附在此四組件之一上才能顯示出來,又稱之為窗體類容器。2.JFrame(窗體)類窗體類JFrame還叫框架類,是一種帶有標(biāo)題欄、菜單和邊界的窗口,而且允許調(diào)整大小,是最重要的頂層容器之一,而且是應(yīng)用程序構(gòu)建框架時(shí)必須使用的頂層容器。JFrame類是AWT中Frame類的子類,它還加入了一些Swing所獨(dú)有的特性。(1)、構(gòu)造方法:JFrame():構(gòu)造一個(gè)新的不可見的窗體對(duì)象JFrame(Stringtitle):構(gòu)造一個(gè)新的、不可見的、具有指定標(biāo)題的窗體對(duì)象(2)、常用方法:publicvoidsetBound(intx,inty,intw,inth):設(shè)置窗口左上角位置和窗口大小publicvoidsetDefaultCloseOperation(JFrame.EXIT_ON_CLOSE):設(shè)定窗口響應(yīng)用戶的關(guān)閉操作publicvoidsetTitle(Stringtitle):設(shè)置窗口標(biāo)題publicvoidsetResizable(Boolenboolean):設(shè)置窗口是否可調(diào)大小publicvoidsetLocation(intx,inty):設(shè)置窗口左上角位置publicvoidpack():用緊湊方式自動(dòng)設(shè)定窗口大小【例9-4】創(chuàng)建一個(gè)帶組件的窗體實(shí)例。importjavax.swing.*;publicclassexa9_4{publicstaticvoidmain(String[]args){//創(chuàng)建一個(gè)帶標(biāo)題的窗體

JFramejf1=newJFrame("這是窗體JFrame");JLabeljb1=newJLabel("歡迎你");f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSEjf1.setLocation(300,200);//設(shè)置窗體的顯示位置

jf1.setSize(320,240);//設(shè)置窗體的尺寸

jf1.getContentPane().add(jb1);jf1.setVisible(true);//設(shè)置窗體的可見性

}}9.3.2容器的布局

Java常用的幾種布局管理器有:FlowLayout——流式布局BorderLayout——邊界布局GridLayout——網(wǎng)格布局(GridLayout)CardLayout——卡片布局GridBagLayout——網(wǎng)格包布局1.FlowLayout流式布局FlowLayout類的構(gòu)造函數(shù):FlowLayout():使用居中方式構(gòu)造流式布局,并且組件間默認(rèn)的水平和垂直間隔是5FlowLayout(intalign):使用給定的對(duì)齊方式構(gòu)造流式布局,并且組件間默認(rèn)的水平和垂直間隔是5FlowLayout(intalign,inthgap,intvgap):使用給定的對(duì)齊方式構(gòu)造流式布局,并且指定組件間垂直和水平間隔FlowLayout類的常用函數(shù):intgetAlignment():獲得對(duì)齊方式voidsetAlignment(intalign):設(shè)置對(duì)齊方式intgetHgap():獲得組件間的水平間隔voidsetHgap(intvgap):設(shè)置組件間的水平間隔intgetVgap():獲得組件間的垂直間隔voidsetVgap(intvgap):設(shè)置組件間的垂直間隔voidremoveLayoutComponentcomp):從布局中移除指定的組件【例9-5】FlowLayout流式布局管理器舉例。import

javax.swing.*;import

java.awt.*;public

class

exa9_5

{

public

static

void

main(String

[]

args)

{

JFrame

f=new

JFrame("Hello!");

f.setLocation(10,100);

f.setSize(600,400);

f.getContentPane().setLayout(new

FlowLayout());

JButton

jb1=new

JButton("Click

1");

JButton

jb2=new

JButton("Click

2");

JButton

jb3=new

JButton("Click

3");

f.getContentPane().add(jb1);

f.getContentPane().add(jb2);

f.getContentPane().add(jb3);

f.setVisible(true);

}

}【程序分析】(1)、改變窗口的大小,那么組件的排列方式也會(huì)跟著變化。(2)、組件的順序和組件的尺寸是確定的,不隨窗口而改變。(3)、當(dāng)然,流式布局管理器類也可以定義很多布局屬性,從而進(jìn)行必要的一些樣式調(diào)整,如:將上例的A行改成f.getContentPane().setLayout(new

FlowLayout(1,10,100))。2.BorderLayout邊界布局BorderLayout類的構(gòu)造函數(shù):publicBorderlayout():構(gòu)造一個(gè)邊界布局管理器publicBorderlayout(inthgap,intvgap):構(gòu)造一個(gè)邊界布局管理器,并且指定組件之間的垂直和水平間隔構(gòu)造函數(shù)的參數(shù)hgap代表水平間距;vgap代表垂直間距。BorderLayout類的常用函數(shù):intgetHgap():獲得組件間的水平間隔voidsetHgap(intvgap):設(shè)置組件間的水平間隔intgetVgap():獲得組件間的垂直間隔voidsetVgap(intvgap):設(shè)置組件間的垂直間隔voidremoveLayoutComponentcomp):從布局中移除指定的組件【例9-6】BorderLayout布局管理器應(yīng)用舉例。import

javax.swing.*;import

java.awt.*;public

classexa9_6{

public

static

void

main(String

[]

args)

{

JFrame

f=new

JFrame("Hello!");

f.setLocation(20,200);

f.setSize(200,200);

f.getContentPane().setLayout(new

BorderLayout(5,5));

JButton

jb1=new

JButton("1");

JButton

jb2=new

JButton("2");

JButton

jb3=new

JButton("3");

JButton

jb4=new

JButton("4");

JButton

jb5=new

JButton("5");

f.getContentPane().add(jb1,BorderLayout.NORTH);

f.getContentPane().add(jb2,BorderLayout.SOUTH);

f.getContentPane().add(jb3,BorderLayout.EAST);

f.getContentPane().add(jb4,BorderLayout.WEST);

f.getContentPane().add(jb5,BorderLayout.CENTER);

f.setVisible(true);

}

}【程序分析】

程序中定義了五個(gè)按鈕,分別放置在BorderLayout布局的5個(gè)區(qū)域內(nèi),各個(gè)區(qū)域的間距為5,每個(gè)按鈕大小自動(dòng)調(diào)整到各個(gè)區(qū)域的大小,此窗口有以下特點(diǎn):(1)改變窗口的大小,組件的排列方式保持不變(2)組件的大小會(huì)隨窗口而改變(3)NORTH與SOUTH有確定的高度,WEST與EAST有確定的寬度,實(shí)際編程時(shí),不一定所有的區(qū)域都有組件,如果四周的區(qū)域(West、East、North、South區(qū)域)沒有組件,則由Center區(qū)域去補(bǔ)充,但是如果Center區(qū)域沒有組件,則保持空白,請(qǐng)?jiān)囍薷某绦蛴^察效果。3.GridLayout網(wǎng)格布局GridLayout類的構(gòu)造函數(shù):publicGridLayout():構(gòu)造一行一列的網(wǎng)格布局publicGridLayout(introw,intcolumns):構(gòu)造具有指定行數(shù)和列數(shù)的網(wǎng)格布局publicGridLayout(introw,intcolumns,inthgap,intvgap):構(gòu)造具有指定行數(shù)和列數(shù)的網(wǎng)格布局,并指定組件間的水平垂直間隔GridLayout類的常用函數(shù):initgetRows():獲得此布局的行數(shù)voidsetRows(introws):設(shè)置此布局的行數(shù)initgetColumns():獲得此布局的列數(shù)voidsetColumns(intcols):設(shè)置此布局的列數(shù)intgetHgap():獲得組件間的水平間隔voidsetHgap(intvgap):設(shè)置組件間的水平間隔intgetVgap():獲得組件間的垂直間隔voidsetVgap(intvgap):設(shè)置組件間的垂直間隔voidremoveLayoutComponentcomp):從布局中移除指定的組件4.CardLayout卡片布局CardLayout類的構(gòu)造函數(shù):publicCardLayout():構(gòu)造一個(gè)CardLayout布局publicCardLayout(inthgap,intvgap):構(gòu)造個(gè)CardLayout布局,且指定各個(gè)組件間的水平和垂直間隔CardLayout類的常用函數(shù):voidfirst(Containerc):顯示第一個(gè)容器中的組件voidlast(Containerc):顯示最后一個(gè)容器中的組件voidnext(Containerc):顯示下一個(gè)容器中的組件voidprevious(Containerc):顯示上一個(gè)容器中的組件9.3.3字體與顏色的使用

Font字體類的使用Font類的構(gòu)造函數(shù)如下:publicFont(Stringname,intstye,intsize);其中:name是字體的名稱,style是字體的風(fēng)格,size是字體的大小。style的取值為Font.BOLD—粗體,Font.ITALIC—斜體,Font.PLAIN—無格式,Font.ITALIC+Font.BOLD—粗斜體四者之一。2.Color顏色類的使用要為字體設(shè)置顏色可以使用Color類。每個(gè)Color對(duì)象代表一種顏色,使用方法有兩種:(1)、直接使用Color類中已提供的顏色常量,如Color.black,Color.BLUE,Color.green,Color.yellow等.(2)、也可以通過調(diào)配三原色——紅、綠、藍(lán)三色的比例來創(chuàng)建自己想要的顏色,如RGB。在RGB中,通過設(shè)定紅黃藍(lán)三種顏色的取值來獲得自己想要的顏色,三種顏色的取值范圍都是在0-255之間9.3.4按鈕按鈕類JButton的構(gòu)造方法:JButton():創(chuàng)建空文本的按鈕JButton(Stringc):創(chuàng)建帶指定文本的按鈕JButton(Iconimage):創(chuàng)建帶指定圖標(biāo)的按鈕JButton(Stringc,Iconimage):創(chuàng)建帶指定文本和圖標(biāo)的按鈕9.3.5文本框、文本區(qū)和標(biāo)簽1.文本框(JTextField)文本框JTextField的構(gòu)造方法:JTextField():創(chuàng)建空白文本的文本框JTextField(intcolumns):創(chuàng)建指定寬度的空白文本域JTextField(Stringtext):創(chuàng)建指定文本的文本框JTextField(Stringtext,intcolumns):指定寬度并初始化文本文本框其它常用方法:publicvoidsetText(Stringc):設(shè)置顯示文本publicStringgetText():取得顯示文本publicvoidsetFont(Fontf):字體設(shè)置publicvoidsetForeground(Colorc):前景色設(shè)置

publicvoid setEditable(booleanb):是否可編輯

publicString getSelectedText():獲得選擇的文本publicvoidsetEchoChar(charc):設(shè)置回顯字符另外常用一種用于輸入密碼的文本框類JPasswordField是文本框的一個(gè)子類,通常要用它的setEchoChar(char)方法設(shè)置回顯字符。例如:JPasswordFielduserpwd=newJPasswordField();userpwd.setEchoChar(‘*’);2.文本區(qū)(JTextArea)文本區(qū)是可以完成多行輸入的可編輯文本框(JTextArea)。文本區(qū)JTextArea的構(gòu)造方法:JTextArea():創(chuàng)建一個(gè)新的文本區(qū)組件JTextArea(introws,intcolumns):創(chuàng)建指定行數(shù)r列數(shù)cJTextArea(Stringc):創(chuàng)建指定初始化文本JTextArea(Stringc,introws,intcolumns):創(chuàng)建指定初始化文本及文本的行數(shù)和列數(shù)

常用設(shè)置方法:publicvoidsetLineWrap(booleanwrap):設(shè)置是否自動(dòng)換行publicvoidsetRows(introws):設(shè)置行數(shù)publicvoidsetColumns(intcolumns):設(shè)置列數(shù)publicvoidappend(Stringc):將指定文本追加到該組件結(jié)尾publicvoidinsert(Stringc,inti):將指定文本插入文本區(qū)的指定行publicvoidsetWrapStyleWord(Booleanb):設(shè)置換行方式3.標(biāo)簽(JLabel)用來顯示文字、圖標(biāo),還可以文字與圖標(biāo)同時(shí)顯示。標(biāo)簽JLabel的構(gòu)造方法:JLabel():創(chuàng)建一個(gè)空標(biāo)簽JLabel(Stringc):創(chuàng)建指定文本的標(biāo)簽JLabel(Stringc,Inti):創(chuàng)建指定文本的標(biāo)簽,并且指定對(duì)齊方式(取值為LEFT、CENTER、RIGHT)JLabel(Stringc,Iconimage,Inti):創(chuàng)建指定文本、圖標(biāo)和對(duì)齊方式的標(biāo)簽標(biāo)簽常用設(shè)置方法:設(shè)置標(biāo)簽顯示文本:publicvoidsetText(Stringc)取得標(biāo)簽顯示文本:publicStringgetText()字體設(shè)置:publicvoidsetFont(Fontf)前景色設(shè)置:publicvoidsetForeground(Colorc)9.3.6事件處理模式與事件包

1.事件處理模式這個(gè)模式涉及的主要概念:(1)、事件(Event)——它描述在用戶界面的用戶交互行為所產(chǎn)生的一種效果,以類的形式出現(xiàn),例如:鼠標(biāo)操作對(duì)應(yīng)的事件類是MouseEvent.(2)、事件源(EventSource)——產(chǎn)生事件的場(chǎng)所,是一種組件對(duì)象。(3)、事件處理方法(Eventhandler)——接收、解析和處理事件類對(duì)象,實(shí)現(xiàn)和用戶交互的方法。(4)、事件監(jiān)聽器(EventListener)——調(diào)用事件處理方法的對(duì)象。2.事件處理的實(shí)現(xiàn)原理事件源(如按鈕)事件監(jiān)聽器A事件監(jiān)聽器B事件監(jiān)聽器X事件處理者1事件處理者2事件處理者N①②③④

使用授權(quán)處理模式進(jìn)行事件處理主要有如圖9-17所示幾步::事件源(如按鈕)事件監(jiān)聽器A事件監(jiān)聽器B事件監(jiān)聽器X事件處理者1事件處理者2事件處理者N①②③④圖9-17事件處理原理3.事件包ActionEventAdjustmentEventComponentEventItemEventTextEventFocusEventInputEventContainerEventWindowEventKeyEventMouseEventjava.util.EventObjectjava.awt.AWTEvent圖9-18AWTEvent類的相關(guān)事件9.3.7復(fù)選框與單選按鈕1.復(fù)選框復(fù)選框JCheckBox的構(gòu)造函數(shù):JCheckBox(Stringc):創(chuàng)建帶有文本標(biāo)簽的復(fù)選框JCheckBox(Stringc,Booleanstate):創(chuàng)建帶文本和初始狀態(tài)的復(fù)選框JCheckBox(Iconimage):創(chuàng)建帶圖標(biāo)的復(fù)選框JCheckBox(Iconimage,Booleanstate):創(chuàng)建帶圖標(biāo)和初始狀態(tài)的復(fù)選框JCheckBox(Stringc,Iconimage):創(chuàng)建帶文本和圖標(biāo)的復(fù)選框JCheckBox(Stringc,Iconimage,Booleanstate):創(chuàng)建帶文本、圖標(biāo)和初始狀態(tài)的復(fù)選框2.單選按鈕

JRadioButton類具有和JCheckBox相同參數(shù)和功能的構(gòu)造函數(shù)。

JRadioButton類和JCheckBox共同的方法有:

setSelected(Boolean):設(shè)置選中狀態(tài)

isSelected():返回是否選中狀態(tài)為了對(duì)復(fù)選框進(jìn)行分組,也可以使用使用ButtonGroup進(jìn)行分類.

注意初始化單選按鈕時(shí),一組中只能有一個(gè)狀態(tài)設(shè)為true。當(dāng)用戶單擊單選按鈕時(shí)既能產(chǎn)生一個(gè)動(dòng)作事件(ActionEvent),也能產(chǎn)生一個(gè)選項(xiàng)事件(ItemEvent),因此創(chuàng)建單選按鈕時(shí)既可以注冊(cè)動(dòng)作監(jiān)聽器還可以注冊(cè)選項(xiàng)監(jiān)聽器。9.3.8列表框和組合框1.列表框(JList)列表框JList的構(gòu)造函數(shù):publicJList():創(chuàng)建一個(gè)新的列表框publicJList(ListModeldataModel):創(chuàng)建一個(gè)列表框,用它顯示指定模型中的元素。publicJList(Object[]listData):創(chuàng)建一個(gè)列表框,以顯示指定數(shù)組listData的元素。JList不支持滾動(dòng),要啟用滾動(dòng),可使用下列代碼:

JScrollPanemyScrollPane=newJScrollPane(); myScrollPane.getViewport().setView(dataList);2.組合框(JComboBox)JComboBox具有和JList相同參數(shù)和功能的構(gòu)造函數(shù)。JComboBox的相關(guān)方法:addItem(int):向組合框內(nèi)添加選項(xiàng)getItemAt(int):返回int指定的索引位置的列表項(xiàng)目的文本(從0開始)。getItemCount():返回列表中的項(xiàng)目的數(shù)量getSelectedIndex():返回列表中的當(dāng)前選擇項(xiàng)目的索引位置getSelectedItem():返回當(dāng)前選擇項(xiàng)目的文本getSelectedIndex(int):選擇指定索引位置的項(xiàng)getSelectedIndex(Object):選擇列表中指定的對(duì)象setMaximumRowCount(int):設(shè)置在組合框中的一次顯示的行的數(shù)量9.3.9對(duì)話框和文件選擇對(duì)話框?qū)υ捒蚍譃槟J綄?duì)話框和無模式對(duì)話框。模式對(duì)話框必須在用戶處理完后才允許用戶與主窗口繼續(xù)進(jìn)行交互。無模式對(duì)話框允許用戶同時(shí)在對(duì)話框和程序剩余部分中輸入信息。

JavaSwing中創(chuàng)建對(duì)話框使用JOptionPane和JDialog兩個(gè)類,前者用來創(chuàng)建標(biāo)準(zhǔn)對(duì)話框,后者用于創(chuàng)建用戶自定義的對(duì)話框。標(biāo)準(zhǔn)對(duì)話框都是模態(tài)對(duì)話框,后者JDialog創(chuàng)建的對(duì)話框既可是模態(tài)的也可是非模態(tài)的對(duì)話框。1.JOptionPane對(duì)話框類在Swing中,JOptionPane提供了四種簡單的對(duì)話框:(1)、消息對(duì)話框(MessageDialog)。(2)、確認(rèn)對(duì)話框(ConfirmDialog)。(3)、選項(xiàng)對(duì)話框(OptionDialog)。(4)、輸入對(duì)話框(InputDialog)。這四個(gè)標(biāo)準(zhǔn)對(duì)話框分別用于提出問題,警告用戶,提供簡要的重要消息的小窗口2.JDialog對(duì)話框類JDialog類的構(gòu)造方法:JDialog():建立一個(gè)無模態(tài)的對(duì)話框,沒有title也不屬于任何事件窗口組件。JDialog(Dialogowner):建立一個(gè)屬于Dialog,non-modal形式,也沒有title的對(duì)話框。JDialog(Dialogowner,Booleanmodal):建立一個(gè)屬于Dialog的對(duì)話框,可決定modal形式,但沒有title。JDialog(Dialogowner,Stringtitle):建立一個(gè)屬于Dialog組件的對(duì)話框,為non-modal形式,對(duì)話框上有title。JDialog(Dialogowner,Stringtitle,Booleanmodal):建立一個(gè)屬于Dialog組件的對(duì)話框,可決定modal形式,且對(duì)話框上有title。JDialog(Frameowner):建立一個(gè)屬于Frame組件的對(duì)話框,為non-modal形式,也沒有title。JDialog(Frameowner,Booleanmodal):建立一個(gè)屬于Frame組件的對(duì)話框,可決定modal形式,但沒有title。JDialog(Frameowner,Stringtitle):建立一個(gè)屬于Frame組件的對(duì)話框,為non-modal形式,對(duì)話框上有title。JDialog(Frameowner,Stringtitle,Booleanmodal):建立一個(gè)屬于Frame組件的對(duì)話框,可決定modal形式,且對(duì)話框上有title。3.JFileChooser文件選擇對(duì)話框類:JFileChooser類的構(gòu)造函數(shù):JFileChooser():構(gòu)造一個(gè)指向用戶默認(rèn)目錄的JFileChooser,此默認(rèn)目錄通常取決于操作系統(tǒng),如win是我的文檔,unix上則是用戶主目錄。JFileChooser(StringcurrentDirectoryPath):構(gòu)造一個(gè)指向給定路徑的JFileChooser。JFileChooser(FilecurrentDirectory):給定的File作為路徑來構(gòu)造一個(gè)JFileChooser。常用方法如下:publicintshowDialog(Componentparent,Stringtext):顯示文件選擇對(duì)話框,用戶可自定義文本(默認(rèn)“打開”)。publicintshowSaveDialog(Componentparent):顯示文件保存對(duì)話框。publicFilegetSelectedFile():返回所選擇的文件。9.3.10菜單在GUI界面中,菜單一般位于窗口上方標(biāo)題欄下面的位置,它是一個(gè)圖形用戶界面不可缺少的組成部分。一個(gè)菜單由三部分組成:JMenuBar——菜單欄,在其中可以加入菜單(JMenu)JMenu——菜單,其中可加入菜單項(xiàng)(JMenuItem)和菜單(JMenu)JMenuItem——菜單項(xiàng),直接指向一個(gè)具體的操作菜單、菜單項(xiàng)和菜單欄的構(gòu)造方法:菜單欄:JMenuBar()菜單:JMenu(Strings)菜單項(xiàng):JMenuItem(Strings)1.菜單條(JMenuBar)一個(gè)菜單條組件是一個(gè)水平菜單。菜單條只能加入到一個(gè)框架中,一個(gè)菜單條由多個(gè)菜單(JMenu)組成,每個(gè)JMenu在JMenubar中都表示為字符串,如:JFramef=newJFrame("JMenuBar");JMenuBarmb=newJMenuBar();f.setJMenuBar(mb);在一個(gè)時(shí)刻,一個(gè)框架中可以顯示一個(gè)菜單條,菜單條不支持監(jiān)聽者。2.菜單(JMenu)提供了一個(gè)基本的下拉式菜單,它可以加入到一個(gè)菜單條或者另一個(gè)菜單中。它在菜單欄下以文本字符串形式顯示,而在用戶單擊它時(shí),則以彈出式菜單顯示.3.菜單項(xiàng)(JMenuItem)菜單項(xiàng)組件通常被加入到菜單中,以構(gòu)成一個(gè)完整的菜單,以文本字符串形式顯示。JMenuItem的外觀可以修改,如字體、顏色、背景、邊框等。除字符串外,在JMenuItem中還可以添加圖標(biāo)。通常我們將一個(gè)ActionListener加入到一個(gè)菜單項(xiàng)對(duì)象中,以提供菜單的行為。4.復(fù)選菜單項(xiàng)(JCheckboxMenuItem)一個(gè)可復(fù)選的菜單項(xiàng),可以在菜單上有選項(xiàng)(“開”或“關(guān)”)。應(yīng)當(dāng)用ItemListener接口來監(jiān)視復(fù)選菜單。當(dāng)復(fù)選框狀態(tài)發(fā)生改變時(shí),就會(huì)調(diào)用itemStateChanged()方法。JMenum1=newJMenu("File");JMenuItemmi1=newJMenuItem("Save");JCheckboxMenuItemmi2=newJCheckboxMenuItem("checkbox1");mi1.addItemListener(this);mi2.addItemListener(this);m1.add(mi1);m1.add(mi2);5.單選按鈕菜單項(xiàng)(JRadioButtonMenuItem)

它是屬于一組菜單項(xiàng)中的一個(gè)菜單項(xiàng),該組中只能選擇一個(gè)項(xiàng)。被選擇的項(xiàng)顯示其選擇狀態(tài)。選擇此項(xiàng)的同時(shí),其他任何以前被選擇的項(xiàng)都切換到未選擇狀態(tài)。要控制一組單選按鈕菜單項(xiàng)的選擇狀態(tài),請(qǐng)使用JButtonGroup對(duì)象。JButtonGroupgroup=newJButtonGroup();JRadioButtonMenuItemmi3=newJRadioButtonMenuItem("Forward");group.add(mi3);m1.add(mi3);6.彈出式菜單(JPopupMenu)彈出式菜單提供了一種獨(dú)立的菜單,它可以在任何組件上顯示??梢詫⒉藛雾?xiàng)和菜單加入到彈出式菜單中去。7.菜單項(xiàng)的使用狀態(tài)菜單項(xiàng)能夠被選取取決于菜單項(xiàng)的啟用和禁用狀態(tài):mi3.setEnabled(false);//初始設(shè)置“Save”菜單項(xiàng)為禁用狀態(tài)8.快捷鍵和加速器快捷鍵顯示為帶有下劃線的字母,加速器則顯示為菜單項(xiàng)旁邊的組合鍵。m1.setMnemonic('F');//設(shè)置菜單的快捷鍵JMenuItemexitItem=newJMenuItem("Exit",'T');//設(shè)置“Exit”菜單項(xiàng)的快捷鍵為“T”。exitItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_T,InputEvent.CTRL_MASK));//設(shè)置“Exit”菜單項(xiàng)的加速器為“Ctrl+T”。9.4任務(wù)四掌握?qǐng)D形的繪制9.4.1坐標(biāo)系統(tǒng)(0,0)X軸圖9-27Java窗口坐標(biāo)系9.4.2顯示字符串字符串繪制方法:publicvoiddrawString(Stringstr,intx,inty):在(x,y)點(diǎn)顯示字符串str。publicvoiddrawChars(charc[],ints,intn,intx,inty):在(x,y)點(diǎn)顯示字符數(shù)組c從位置s開始的n個(gè)內(nèi)容。publicvoiddrawBytes(byteb[],ints,intn,intx,inty):在(x,y)點(diǎn)顯示字節(jié)數(shù)組b從位置s開始的n個(gè)內(nèi)容。9.4.3畫直線與矩形Graphics類中用于繪制直線與矩形的方法如下:publicabstractvoiddrawLine(intx1,inty1,intx2,inty2):在點(diǎn)(x1,y1)和(x2,y2)之間用當(dāng)前顏色繪制線段。publicvoiddrawRect(intx,inty,intwidth,intheight):以點(diǎn)(x,y)為左上角坐標(biāo),width和height為寬度和高度,用當(dāng)前顏色畫矩形。publicabstactvoidfillRect(intx,inty,intwidth,intheight):以點(diǎn)(x,y)為左上角坐標(biāo),width和height為寬度和高度,用當(dāng)前顏色畫一個(gè)實(shí)心的矩形。publicabstactvoidclearRect(intx,inty,intwidth,intheight):以點(diǎn)(x,y)為左上角坐標(biāo),width和height為寬度和高度,用當(dāng)前背景顏色畫一個(gè)實(shí)心的矩形。此方法用于清除某個(gè)矩形顯示區(qū)域。publicabstactvoiddrawRoundRect(intx,inty,intwidth,intheight,intarcWidth,intarcHeight):以點(diǎn)(x,y)為左上角坐標(biāo),width和height為寬度和高度,用當(dāng)前顏色畫圓角矩形。publicabstactvoidfillRoundRect(intx,inty,intwidth,intheight,intarcWidth,intarcHeight):以點(diǎn)(x,y)為左上角坐標(biāo),width和height為寬度和高度,用當(dāng)前顏色畫一個(gè)實(shí)心的圓角矩形。publicvoiddraw3Drect(intx,inty,intwidth,inthei

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論