




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2015-11-17第9章
圖形用戶界面9.1圖形用戶界面概述圖形用戶界面主要由以下幾部分組成:1.容器——可以容納其他組件的組件。2.標準組件——圖形用戶界面的基本單位,不能包含其他的成分。3.布局管理器——管理各類組件在容器中的位置、組件的大小及排列順序等。9.1.2java.awt軟件包抽象窗口工具AWT(AbstractWindowTookit):包含了創(chuàng)建圖形用戶界面的所有組件基本圖形元素組件類容器組件類布局管理器類
9.1.2java.awt軟件包類層次結(jié)構(gòu)9.1.2javax.swing軟件包Swing是在AWT的基礎(chǔ)上發(fā)展起來的,該軟件包中的組件全部用Java語言編寫,稱為輕量級組件,目的就是使得組件在平臺上的工作方式都相同,因此沒有本地代碼,與操作系統(tǒng)無關(guān),這是swing和AWT的本質(zhì)區(qū)別
9.1.2javax.swing軟件包類層次結(jié)構(gòu)9.1.3swing組件介紹1.Component類Component類的常用方法如下:(1)setSize(Dimension
d):調(diào)整組件的大小,使其寬度為d.width,高度為d.height(2)setSize(int
width,int
height):調(diào)整組件的大小,使其寬度為width,高度為height(3)setVisible(boolean
b):根據(jù)參數(shù)b的值顯示或隱藏該Window2.Container類Container類的常用方法如下:(1)add(Componentcomp):將參數(shù)指定的組件追加到這個容器的尾部(2)remove(Componentcomp):從這個容器中去掉參數(shù)所指定的組件(3)setLayout(LayoutManager
mgr):設(shè)置這個容器的布局管理器3.Window類Window類是JWindow類的直接父類,它的常用方法如下:(1)dispose():釋放由該Window、其子組件及其擁有的所有子組件使用的所有本機屏幕資源(2)pack():調(diào)整該窗口的大小,以適合其子組件的首選大小和布局(3)setBounds(int
x,int
y,int
width,int
height):移動組件并調(diào)整其大小(4)setBounds(Rectangle
r):移動組件并調(diào)整其大小,使其符合新的有界矩形r4.JComponent類javax.swing.JComponent是除頂層容器以外的所有swing組件的基類,它的常用方法如下所示:(1)getHeight():返回該組件的當前高度。(2)getWidth():返回該組件的當前寬度。(3)getX():返回組件原點的當前x坐標。(4)getY():返回組件原點的當前y坐標。(5)paint(Graphics
g):由Swing調(diào)用,用來繪制組件。(6)setBackground(Color
bg):設(shè)置該組件的背景色。(7)setForeground(Color
fg):設(shè)置該組件的前景色。(8)setFont(Font
font):設(shè)置該組件的字體。【表9-1】組件的含義9.2swing中常用組件9.2.1JFrameJFrame是帶有標題和邊框的頂層窗口。使用JFrame至少需要下面三個步驟:1.創(chuàng)建對象:創(chuàng)建對象的常用構(gòu)造方法如下:(1)JFrame():構(gòu)造一個初始時不可見的新窗口(2)JFrame(String
title):創(chuàng)建一個新的、初始不可見的、具有指定標題的Frame。參數(shù)代表標題字符串9.2.1JFrame2.設(shè)置大小:使用setSize()方法,該方法的定義為:publicvoidsetSize(int
width,int
height):調(diào)整組件的大小,width是組件的新寬度,單位是像素height是組件的新高度,單位是像素9.2.1JFrame3.設(shè)置可見:使用setVisible()方法,該方法的定義如下:publicvoidsetVisible(boolean
b):根據(jù)參數(shù)b
的值顯示或隱藏此Window。b值如果為true,則使Window可見。如果為false,則隱藏此Window、此Window的子組件,以及它擁有的所有子級。9.2.2JWindowJWindow是一個容器,它沒有標題欄、窗口管理按鈕或者其他與JFrame關(guān)聯(lián)的修飾,可以顯示在用戶桌面上的任何位置。9.2.3JDialog
JDialog是創(chuàng)建對話框窗口的主要類
【例9-2】importjavax.swing.*;classmy2{publicstaticvoidmain(Stringargs[]){JFramef=newJFrame("hello");f.setSize(300,300);f.setVisible(true);JDialogd=newJDialog(f,"mydialog",true);d.setSize(200,200);d.setVisible(true);}}9.2.4JButtonJButton是創(chuàng)建按鈕的主要類。JButton類的主要構(gòu)造方法如下:(1)JButton():創(chuàng)建不帶有設(shè)置文本或圖標的按鈕(2)JButton(String
text):創(chuàng)建一個帶文本的按鈕9.2.5JTextFieldJTextField是創(chuàng)建單行文本框的主要類。JTextField的主要構(gòu)造方法如下:(1)JTextField():構(gòu)造一個新的TextField。(2)JTextField(int
columns):構(gòu)造一個具有指定列數(shù)的新的空TextField。(3)JTextField(String
text):構(gòu)造一個用指定文本初始化的新TextField。(4)JTextField(String
text,int
columns):構(gòu)造一個用指定文本和列初始化的新TextField。
9.2.6JTextAreaJTextArea是顯示純文本的多行區(qū)域。默認情況下,換行屬性設(shè)置為false(不換行)如果要在JTextArea對象中加入滾動條,則可以把多行文本框?qū)ο蠓旁贘ScrollPane的內(nèi)部。9.2.6JTextAreaJTextArea常用的構(gòu)造方法如下:(1)JTextArea():構(gòu)造新的TextArea。(2)JTextArea(int
rows,int
columns):構(gòu)造具有指定行數(shù)和列數(shù)的新的空TextArea。(3)JTextArea(String
text):構(gòu)造顯示指定文本的新的TextArea。(4)JTextArea(String
text,int
rows,int
columns):構(gòu)造具有指定文本、行數(shù)和列數(shù)的新的TextArea。9.2.7JLabelJLabel對象可以顯示文本、圖像或同時顯示二者。JLabel類的常用構(gòu)造方法如下:(1)JLabel(Icon
image):創(chuàng)建具有指定圖像的JLabel實例(2)JLabel(String
text):創(chuàng)建具有指定文本的JLabel實例(3)JLabel(String
text,Icon
icon,int
horizontalAlignment):創(chuàng)建具有指定文本、圖像和水平對齊方式的JLabel實例(4)JLabel(String
text,int
horizontalAlignment):創(chuàng)建具有指定文本和水平對齊方式的JLabel實例9.2.7JLabel9.2.8JComboBoxJComboBox是將按鈕或可編輯字段與下拉列表組合的組件。用戶可以從下拉列表中選擇值,下拉列表在用戶單擊下拉三角形時顯示。如果組合框處于可編輯狀態(tài),則組合框?qū)ㄓ脩粼谄渲休斎氲淖侄巍?.2.8JComboBoxJComboBox的常用構(gòu)造方法如下:(1)JComboBox():創(chuàng)建具有默認數(shù)據(jù)模型的JComboBox。(2)JComboBox(Object[]
items):創(chuàng)建包含指定數(shù)組中元素的JComboBox。(3)JComboBox(Vector<?>
items):創(chuàng)建包含指定Vector中元素的JComboBox。9.2.8JComboBoxJComboBox的常用方法如下:(1)addItem(Object
anObject):為列表添加項。(2)getItemAt(int
index):返回指定索引處的列表項。(3)getSelectedItem():返回當前所選項。(4)removeItem(Object
anObject):從項列表中去掉某項(5)removeItemAt(int
anIndex):去掉anIndex處的項。(6)setEditable(boolean
aFlag):確定JComboBox字段是否可編輯。9.2.9JListJList是顯示對象列表并允許用戶選擇一個或多個項的組件。JList可以方便的顯示對象數(shù)組或?qū)ο骎ector。JList不實現(xiàn)直接滾動,要創(chuàng)建一個滾動的列表,請將它作為JScrollPane的視圖。JList的常用構(gòu)造方法如下:(1)JList():構(gòu)造一個具有空的、只讀模型的JList。(2)JList(Object[]
listData):構(gòu)造一個JList,使其顯示指定數(shù)組中的元素。(3)JList(Vector<?>
listData):構(gòu)造一個JList,使其顯示指定Vector中的元素。9.2.9JList9.2.10菜單創(chuàng)建菜單主要用到三個類:JMenuBar、JMenu和JMenuItemJMenuBar是創(chuàng)建菜單欄的類,可以將JMenu對象添加到菜單欄,JMenu對象中的每一項用JMenuItem來創(chuàng)建9.2.10菜單9.2.10菜單JMenuBar的常用方法如下:(1)JMenuBar():創(chuàng)建新的菜單欄。(2)add(JMenu
c):將指定的菜單追加到菜單欄的末尾。JMenu的常用方法如下:(1)JMenu():構(gòu)造沒有文本的新JMenu。(2)JMenu(String
s):構(gòu)造一個新JMenu,用提供的字符串作為其文本(3)add(JMenuItem
menuItem):將某個菜單項追加到此菜單的末尾。(4)addSeparator():將新分隔符追加到菜單的末尾。(5)remove(JMenuItem
item):從此菜單去掉指定的菜單項9.2.10菜單JMenuItem的常用方法如下:(1)JMenuItem():創(chuàng)建不帶有設(shè)置文本或圖標的JMenuItem。(2)JMenuItem(Action
a):創(chuàng)建從指定的Action獲取其屬性的菜單項。(3)JMenuItem(Icon
icon):創(chuàng)建帶有指定圖標的JMenuItem。(4)JMenuItem(String
text):創(chuàng)建帶有指定文本的JMenuItem。(5)JMenuItem(String
text,Icon
icon):創(chuàng)建帶有指定文本和圖標的JMenuItem。(6)JMenuItem(String
text,int
mnemonic):創(chuàng)建帶有指定文本和鍵盤助記符的JMenuItem。9.2.11JFileChooserJFileChooser是文件選擇對話框。JFileChooser常用的方法如下:(1)addChoosableFileFilter(FileFilter
filter):向用戶可選擇的文件過濾器列表添加一個過濾器。(2)showOpenDialog(Component
parent):彈出一個“OpenFile”文件選擇器對話框。(3)showSaveDialog(Component
parent):彈出一個“SaveFile”文件選擇器對話框。(4)getSelectedFile():返回選中的文件。
FileFilterFileFilter是一個抽象類,JFileChooser使用它過濾顯示給用戶的文件集合。該抽象類的主要方法如下:(1)accept(File
f):此過濾器是否接受給定的文件(2)getDescription():此過濾器的描述。
9.3布局管理器布局管理器介紹組件的排列順序、組件的大小和位置交給布局管理器類來管理。當窗口移動或大小發(fā)生變化時各組件的大小和位置也會隨之變化,這也交給布局管理器類來管理。Java中常用的布局管理器類有FlowLayout、BorderLayout、GridLayout、CardLayout和GridBagLayout。這幾種布局管理器類都在java.awt包中。9.3.1流布局FlowLayout流布局流布局用于安排有向流中的組件,類似于段落中的文本行。流的方向可以是從左向右、從右向左兩種。流布局一般用來安排面板中的按鈕。流布局FlowLayout的常用構(gòu)造方法如下:(1)FlowLayout():構(gòu)造一個新的FlowLayout,它是居中對齊的,默認的水平和垂直間隙是5個單位(2)FlowLayout(int
align):構(gòu)造一個新的FlowLayout,它具有指定的對齊方式,默認的水平和垂直間隙是5個單位(3)FlowLayout(int
align,int
hgap,int
vgap):創(chuàng)建一個新的流布局管理器,它具有指定的對齊方式以及指定的水平和垂直間隙對齊方式對齊方式align參數(shù)的值必須是以下值之一:FlowLayout.LEFT:每一行組件都應(yīng)該是左對齊的。FlowLayout.RIGHT:每一行組件都應(yīng)該是右對齊的。FlowLayout.CENTER:每一行組件都應(yīng)該是居中的。FlowLayout.LEADING:每一行組件都應(yīng)該與容器方向的開始邊對齊,例如,對于從左到右的方向,則與左邊對齊。FlowLayout.TRAILING:每一行組件都應(yīng)該與容器方向的結(jié)束邊對齊,例如,對于從左到右的方向,則與右邊對齊。
9.3.2邊界布局BorderLayout邊界布局介紹邊界布局將容器分為五個區(qū)域:北、南、東、西、中,每個區(qū)域最多只能包含一個組件,并通過相應(yīng)的常量進行標識:NORTH、SOUTH、EAST、WEST、CENTER。
邊界布局介紹當使用邊界布局將一個組件添加到容器中時,要使用這五個常量之一,例如:Panelp=newPanel();p.setLayout(newBorderLayout());p.add(newButton("Okay"),BorderLayout.SOUTH);如果未指定某個區(qū)域,默認是CENTER。因此下面這一句p2.add(newTextArea());等價于p.add(newTextArea(),BorderLayout.CENTER);邊界布局BorderLayout類的常用構(gòu)造方法如下:(1)BorderLayout():構(gòu)造一個組件之間沒有間距的新邊界布局。(2)BorderLayout(int
hgap,int
vgap):構(gòu)造一個具有指定組件間距的邊界布局。水平間距由hgap指定,垂直間距由vgap指定。9.3.3網(wǎng)格布局GridLayout網(wǎng)格布局GridLayout類是一個布局管理器,它以矩形網(wǎng)格形式對容器的組件進行布置。容器被分成大小相等的矩形,一個矩形中放置一個組件。
常用構(gòu)造方法1.GridLayout():創(chuàng)建具有默認值的網(wǎng)格布局,即每個組件占據(jù)一行一列。2.GridLayout(int
rows,int
cols):創(chuàng)建具有指定行數(shù)和列數(shù)的網(wǎng)格布局。3.GridLayout(int
rows,int
cols,int
hgap,int
vgap):創(chuàng)建具有指定行數(shù)和列數(shù)的網(wǎng)格布局。hgap是水平間距,vgap是垂直間距。9.3.4卡片布局CardLayout卡片布局CardLayout對象是容器的布局管理器。它將容器中的每個組件看作一張卡片。一次只能看到一張卡片,容器則充當卡片的堆棧。當容器第一次顯示時,第一個添加到CardLayout對象的組件為可見組件。常用構(gòu)造方法1.CardLayout():創(chuàng)建一個間距大小為0的新卡片布局2.CardLayout(int
hgap,int
vgap):創(chuàng)建一個具有指定水平間距和垂直間距的新卡片布局9.3.6空布局使用null布局可以達到精確定位和控制組件大小的要求。容器.setLayout(null)——設(shè)置布局管理器為nullsetBounds(int
x,int
y,int
width,int
height)——移動組件并調(diào)整其大小。由x和
y指定左上角的新位置,由
width和height指定新的大小?!纠?-16】9.4事件處理9.4.1事件處理機制
事件處理機制分為三部分:事件源:發(fā)生事件的GUI組件就是事件源。如:單擊按鈕時,按鈕就是事件源事件對象:當用戶在界面上操作時,會產(chǎn)生各種事件對象,如:單擊按鈕,Java虛擬機自動產(chǎn)生ActionEvent的對象。按動鍵盤,自動產(chǎn)生KeyEvent的對象事件監(jiān)聽器:一些接口聲明,在接口中定義事件處理方法。如:鼠標單擊,編寫事件處理器,需要實現(xiàn)ActionListener接口,在這個接口中有一個方法actionPerformed(ActionEvente)需要實現(xiàn)9.4.2事件處理方法
1)為可能產(chǎn)生事件的組件注冊事件監(jiān)聽器,形式為:組件.addXXXListener(事件監(jiān)聽器)其中XXXListener為某個事件監(jiān)聽器的接口名稱。如為按鈕b1的單擊事件注冊事件監(jiān)聽器的語句如下:b1.addActionListener(m);單擊按鈕b1后將交給m對象(事件監(jiān)聽器的對象)去處理9.4.2事件處理方法2)編寫一個類,實現(xiàn)相應(yīng)的監(jiān)聽器接口,即實現(xiàn)監(jiān)聽器接口中聲明的與程序設(shè)計意圖有關(guān)的成員方法。實際上就是在監(jiān)聽器接口的實現(xiàn)過程中,將對該事件的處理語句寫在方法體中,這樣就實現(xiàn)了程序的功能。如下例中xx類實現(xiàn)了ActionListener接口,importjava.awt.event.*;classxximplementsActionListener{publicvoidactionPerformed(ActionEvente){…}}9.4.3事件類與事件監(jiān)聽器接口1、事件類(1)ActionEvent:當單擊按鈕、選擇某項菜單或在文本框中回車時,產(chǎn)生ActionEvent事件。(2)ItemEvent:在單選框、復(fù)選框、列表框等選定或取消選定某項時產(chǎn)生ItemEvent事件。(3)KeyEvent:鍵盤事件。當按下、釋放或鍵入某個鍵時,組件對象將生成KeyEvent事件。1、事件類(4)MouseEvent:鼠標事件。當按下、釋放、單擊鼠標按鍵,移動、拖動鼠標時生成MouseEvent事件。(5)TextEvent:當文本框和多行文本區(qū)域內(nèi)容修改時生成TextEvent事件。(6)WindowEvent:窗口事件類。當打開、關(guān)閉、激活、停用、圖標化或取消圖標化Window對象時,或者焦點轉(zhuǎn)移到Window內(nèi)或移出Window時,由Window對象生成WindowEvent事件。2、事件監(jiān)聽器接口(1)ActionListener(例9-10):如果要對單擊按鈕、選擇某項菜單或在文本框中回車等操作進行處理,可以編寫事件處理器類該類需要實現(xiàn)ActionListener接口,該接口中有一個方法需要實現(xiàn):actionPerformed(ActionEvent
e),該方法的方法體就是具體的操作2、事件監(jiān)聽器接口(2)ItemListener(例9-7):如果要對在單選框、復(fù)選框、列表框等組件中選定或取消選定某項等操作進行處理,可以編寫事件處理器類該類需要實現(xiàn)ItemListener接口。該接口中有一個方法需要實現(xiàn):
itemStateChanged(ItemEvent
e),該方法的方法體就是具體的處理過程2、事件監(jiān)聽器接口(3)KeyListener:如果按下、釋放或鍵入某個鍵時需要執(zhí)行處理,要編寫相應(yīng)的事件處理器類,該類需要實現(xiàn)KeyListener接口。該接口中有以下幾個方法需要實現(xiàn):keyPressed(KeyEvent
e):按下某個鍵時調(diào)用此方法keyReleased(KeyEvent
e):釋放某個鍵時調(diào)用此方法keyTyped(KeyEvent
e):鍵入某個鍵時調(diào)用此方法2、事件監(jiān)聽器接口(4)MouseListener(例9-14):當按下、釋放、單擊鼠標按鍵,移動、拖動鼠標時如果需要進行相應(yīng)的處理,則需要編寫事件處理器類,該類需要實現(xiàn)MouseListener接口。該接口中有以下幾個方法需要實現(xiàn):mouseClicked(MouseEvent
e):鼠標按鍵在組件上單擊(按下并釋放)時調(diào)用mouseEntered(MouseEvent
e):鼠標進入到組件上時調(diào)用mouseExited(MouseEvent
e):鼠標離開組件時調(diào)用mousePressed(MouseEvent
e):鼠標按鍵在組件上按下時調(diào)用mouseReleased(MouseEvent
e):鼠標按鈕在組件上釋放時調(diào)用2、事件監(jiān)聽器接口(5)TextListener:當文本框和多行文本區(qū)域內(nèi)容修改時如果需要進行相應(yīng)的處理,則需要編寫事件處理器類,該類需要實現(xiàn)TextListener接口。該接口中需要實現(xiàn)的方法如下:textValueChanged(TextEvent
e),該方法的方法體就是需要執(zhí)行的具體處理過程2、事件監(jiān)聽器接口(6)WindowListener:如果要對窗口事件進行處理,需要編寫事件處理器類實現(xiàn)WindowListener接口。該接口中有以下方法需要實現(xiàn):windowActivated(WindowEvent
e):
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國石棉制品行業(yè)發(fā)展趨勢及投資戰(zhàn)略研究報告
- 廈門工學院《供應(yīng)鏈管理實驗》2023-2024學年第二學期期末試卷
- 溫州理工學院《居住建筑設(shè)計原理》2023-2024學年第二學期期末試卷
- 貴州城市職業(yè)學院《化工原理實驗一》2023-2024學年第二學期期末試卷
- 南京工業(yè)職業(yè)技術(shù)大學《兒重發(fā)育保健護理》2023-2024學年第二學期期末試卷
- 河南質(zhì)量工程職業(yè)學院《數(shù)字媒體后期制作》2023-2024學年第二學期期末試卷
- 山東現(xiàn)代學院《寶石合成與優(yōu)化》2023-2024學年第二學期期末試卷
- 河南應(yīng)用技術(shù)職業(yè)學院《建筑風格史》2023-2024學年第二學期期末試卷
- 四川音樂學院《ED器件與應(yīng)用技術(shù)》2023-2024學年第二學期期末試卷
- 聊城大學《幼兒心理學》2023-2024學年第二學期期末試卷
- 安徽省歷年中考語文現(xiàn)代文閱讀之非連續(xù)性文本閱讀6篇(截至2024年)
- 《典型的光器件AWG》課件
- 出血熱知識培訓課件
- 廣東省汕頭市潮南區(qū)2024-2025學年高一上學期期末教學質(zhì)量監(jiān)測英語試卷(無答案)
- 2024年度工業(yè)自動化設(shè)備維護保養(yǎng)及上門維修合同3篇
- 2025年公司總經(jīng)理年終總結(jié)工作報告
- 安徽省“江淮十?!?024屆高考化學一模試卷含解析
- 圖書外借服務(wù)計劃
- 軟考系統(tǒng)集成項目管理工程師教程完整版
- 統(tǒng)編版八年級語文上冊第六單元作業(yè)設(shè)計
- 危險性較大的分部分項工程清單和安全管理措施范文
評論
0/150
提交評論