Java程序設計教程課件第7章 圖形用戶接口_第1頁
Java程序設計教程課件第7章 圖形用戶接口_第2頁
Java程序設計教程課件第7章 圖形用戶接口_第3頁
Java程序設計教程課件第7章 圖形用戶接口_第4頁
Java程序設計教程課件第7章 圖形用戶接口_第5頁
已閱讀5頁,還剩63頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第7章圖形用戶接口AWT組建和Swing組件2GUI簡介31容器組件33本章內容提要布局設計5Swing基本組建34事件處理與對話框36用戶進行交互的視窗界面稱為GUI;Java構建GUI的組件主要有AWT組件和Swing組件。7.1GUI簡介AWT組件

當Java早期發(fā)布的時候,它包含了一個叫抽象窗口工具(AbstractWindowingToolkit,簡稱AWT)庫,用來構建圖形用戶界面應用程序。AWT提供一套豐富的工具,可以建立平臺獨立、容易使用的圖形用戶界面,包含了許多類來支持GUI設計。

7.1GUI簡介Swing組件Java在1998年5月發(fā)布的JFC包含了一個新的圖形用戶界面開發(fā)包。這個新的圖形用戶界面組件叫做Swing組件。

Swing的出現是為了解決AWT的移植性和提供更多的企業(yè)級應用程序所需要的功能。Swing是一個用于開發(fā)Java應用程序用戶界面的開發(fā)工具包。7.1GUI簡介7.1GUI簡介java.awt.ContainerJComponentAbstractButtonJButtonJCheckBoxJRadioButtonJMenuItemJTextComponentJTextFieldJTextAreaJComboBoxJLableJFileChooserJListJMenuBarJPanelJTable......java.awt.Component

JFrame常用方法

JFrame()JFrame(Strings)publicvoidsetBounds(inta,intb,intwidth,intheight)publicvoidsetSize(intwidth,intheight)publicvoidsetVisible(booleanb)setTitle(Strings)publicvoidvalidate()7.2容器組件

當窗口初始或調用方法setSize()、setBounds()調整大小后,都應調用方法vaidate(),以確保當前窗口中添加的組件能顯示出來。JFrame類的使用7.2容器組件應用JFrame時需要注意以下幾點:(1)不可以把組件直接填加到swing窗體中。(2)swing窗體含有一個稱為內容面板的容器,應當把組件填加到內容面板中。(3)不能為swing窗體設置布局,而應當為swing窗體的內容面板設置布局。(4)swing窗體通過調用方法getContentPane(),得到它的內容面板。7.2容器組件窗口與屏幕

當窗口可見時,它被自動顯示在屏幕上,有時可能希望窗口和計算機的屏幕的大小相同或窗口的寬和屏幕的寬相同。Tollkit類中提供了一個方法:

DimensiongetScreenSize()

該方法可以返回一個Dimesion對象,這個對象中有名字是width,height的int型屬性,其中width的值就是屏幕的寬,height的值就是屏幕的高。7.2容器組件JPanel面板

面板可以幫助開發(fā)人員對界面進行規(guī)劃,方便界面元素的管理和布局。

JPanel類的構造方法:

JPanel();7.2容器組件面板的應用7.2容器組件滾動窗口JScrollPane

一些界面的顯示區(qū)域是有限的,當一些組件過大時,可以把一個組件放到一個滾動窗口中,然后通過滾動條來觀察這些組件。

JScorollPane的構造方法為:

JScorollPane();7.2容器組件滾動面板的應用7.2容器組件文本框JTextField類的主要方法:JTextField()JTextField(intx)publicvoidsetText(Strings)publicStringgetText()publicvoidsetEditable(booleanb)

7.3常用基本組件文本框的使用7.3常用基本組件文本區(qū)

JTextArea類的主要方法:JTextArea()JTextArea(Strings,intx,inty)publicvoidsetText(Strings)publicStringgetText()publicvoidappend(Strings)StringgetSelectedText()publicvoidselectAll()7.3常用基本組件文本區(qū)的應用7.3常用基本組件按鈕組件

JButton類常用的方法:JButton()publicvoidsetLabel(Strings)publicStringgetLabel()publicvoidaddActionListener(ActionListener)7.3常用基本組件標簽組件

JLabel類的常用方法:JLabel()

publicvoidsetText(Strings)publicStringgetTextl()

publicintgetAlignment()7.3常用基本組件按鈕與標簽的使用7.3常用基本組件復選框

JCheckBox類常用方法:publicJCheckBox()

創(chuàng)建復選框。publicvoidsetText(Strings)

設置復選框顯示字符為s。publicbooleanisSelected()

得到復選框是否為選中狀態(tài)。publicvoidsetSelected(booleanf)

設置復選框為選中狀態(tài)。publicStringgetText()

得到被選中復選框的內容。7.3常用基本組件復選框的應用7.3常用基本組件單選按鈕單選按鈕和復選框很類似,所不同的是在若干個復選框中可以同時選中多個,而一組單選按鈕同一時刻只能有一個被選中。當創(chuàng)建了若干個單選按鈕后,應使用ButtonGroup再創(chuàng)建一個組對象,然后利用這個對象把這若干個單選按鈕歸組,歸到同一組的單選按鈕在同一時刻只能選擇一個。7.3常用基本組件單選按鈕的應用7.3常用基本組件下拉列表

JComboBox類的常用方法:JComboBox()publicvoidadd(Stringname)publicStringgetSelectedItem()publicvoidinsert(Stringname,intindex)publicvoidselect(intindex)publicvoidselect(Stringname)7.3常用基本組件下拉列表的應用7.3常用基本組件

當把組件添加到容器中時,希望控制組件在容器中的位置,這就需要學習布局設計的知識。以下將分別介紹java.awt包中的FlowLayout、BorderLayout、CardLayout、GridLayout布局類java.swing.border包中的BoxLayout布局類7.4布局組件FlowLayout布局

遵循這種布局的容器將其中的組件按照加入的先后順序從左向右排列,一行排滿之后就轉到下一行繼續(xù)從左至右排列,每一行中的組件都按著布局指定的對齊方式和垂直間隙排列;當形成多行組件時,行與行之間的間隙是就是布局的水平間隙。7.4布局組件

這種布局當容器內的組件數增加時,就顯得高低參差不齊。有時會采用容器嵌套的方法,使整個容器的布局達到應用的需求。

FlowLayout類的常用方法如下:FlowLayout()

FlowLayout(intaligin,inthgap,intvgap)publicvoidsetAlignment(intalign)

publicvoidsetHgap(inthgap)

publicvoidsetVgap(intvgap)

7.4布局組件FlowLayout布局的應用7.4布局組件BorderLayout布局使用這種布局,容器空間簡單地劃分為東、西、南、北、中五個區(qū)域,中間的區(qū)域最大。每加入一個組件都應該指明把這個組件加在哪個區(qū)域中,區(qū)域由BorderLayout中的靜態(tài)常量CENTER、NORTH、SOUTH、WEST、EAST表示。例如:

con.add(a,BorderLayout.CENTER);

con.add(BorderLayour.CENTER,a);7.4布局組件添加到某個區(qū)域的組件將占據整個這個區(qū)域。每個區(qū)域只能放置一個組件。使用BorderLayout布局的容器最多能添加5個組件。7.4布局組件布局的應用

7.4布局組件CardLayout

布局使用CardLayout布局的容器可以容納多個組件,但是實際上同一時刻容器只能從這些組件中選出一個來顯示,就像一疊“撲克牌”每次只能顯示最上面一張一樣,這個被顯示的組件將占據所有的容器空間,依次排序。

7.4布局組件CardLayout

布局假設有一個容器con,那么,使用CardLayout

的一般步驟如下:

1.創(chuàng)建CardLayout對象作為布局。

2.使用容器的setLayout()方法為容器設置布局。

3.調用容器的方法add(Strings,Componnemtb)

。7.4布局組件4.創(chuàng)建的布局card用CardLayout類提供的show()方法,根據容器名字con

和其中的組件的代號s顯示這一組件,也可以按組件加入容器的順序顯示組件,如:card.first(con)card.last(con)card.next(con)card.previous(con)7.4布局組件CardLayout布局的應用7.4布局組件GridLayout布局

把容器劃分成若干行乘若干列的網格區(qū)域,組件就位于這些劃分出來的小格中。使用GridLayout布局編輯器的一般步驟如下:(1)使用GridLayout的構造方法GridLayout(intm,intn)創(chuàng)建布局對象。(2)使用GridLayout布局的容器調用方法add將組件加入容器。

7.4布局組件GridLayout布局的應用7.4布局組件BoxLayout布局

BoxLayout在java.swing.border包中。javaswing包提供了Box類,該類創(chuàng)建的容器稱作一個盒式容器,盒式容器的的默認布局就是盒式布局,而且不允許更改盒式容器的布局。因此,在策劃程序的布局時,可以利用容器的嵌套,將某個容器嵌入幾個盒式容器,達到布局目的。7.4布局組件

BoxLayout布局的應用7.4布局組件

控制盒式布局容器中組件之間的距離,就需要使用水平支撐組件或垂直支撐組件。1.支撐Box類調用靜態(tài)方法createHorizontalStrut(intwidth)可以得到一個不可見的水平Struct類型對象,稱做水平支撐。7.4布局組件Box類調用靜態(tài)方法createVertialStrut(intheight)可以得到一個不可見的垂直Struct類型對象,稱做垂直支撐。一個行型盒式布局的容器,可以通過在添加的組件之間插入水平支撐來控制組件之間的距離。一個列型盒式布局的容器,可以通過在添加的組件之間插入垂直支撐來控制組件之間的距離。7.4布局組件應用支撐8.2布局設計2.膠水如果想處理盒式布局容器的剩余空間(容器的兩端是剩余的空間),就需要膠水組件。膠水也是不可見的組件,Box類調用靜態(tài)方法createHorizontalGlue()可以得到一個不可見的水平Glue類型對象,稱做水平膠水。7.4布局組件應用膠水7.4布局組件null布局

向空布局的容器中添加組件時,組件在容器中的顯示位置由組件本身調用setBounds方法來確定。setBounds(inta,intb,intwidth,intheight)方法是所有組件都擁有的一個方法,組件調用該方法可以設置本身的大小和在容器中的位置。

7.4布局組件菜單條

javax.swing

包中的JMenubar類是負責創(chuàng)建菜單條的,即JMenubar

的一個實例就是一個菜單條。JFrame類提供一個將菜單條放置到窗口中的方法:

setMenuBar(JMenuBarbar);

只能向窗口添加一個菜單條。

7.5菜單組件菜單JMenu類的主要方法:JMenu()JMenu(Strings)publicvoidadd(JMenuItemitem)

publicMenuItemgetItem(intn)

publicvoidinsert(MenuItemitem,intn)publicvoidremove(intn)

7.5菜單組件菜單項

JMenuItem類的主要方法:JMenuItem()

JMenuItem(Strings)publicStringgetText()publicvoidaddActionListener(ActionListener)7.5菜單組件7.5菜單組件菜單的應用

7.5菜單組件有關菜單的幾個技巧

(1)增加菜單分割線使用JMenu類中的addSeparator()方法。如:jMenu1是JMenu的一個實例

jMenu1.add("打開");jMenu1.addSeparator();//分隔線

jMenu1.add("保存");jMenu1.add("退出");

7.5菜單組件(2)復選框菜單項

JCheckBoxMenuItem類創(chuàng)建這個菜單項。如:

JMenuItemjMenuItem3=newJCheckBoxMenuItem();(3)嵌入子菜單

JMenu是JMenuItem的子類,因此菜單項本身還可以是一個菜單,稱這樣的菜單項為子菜單。

構造的界面是無法與用戶進行交互的,如果實現交互,必須對用戶的操作進行監(jiān)控,并相應地作出反應。主要涉及三個概念:事件源監(jiān)視器處理事件的接口

7.6事件事件源

能夠產生事件的對象都可以成為事件源,如文本框。監(jiān)視器

負責對事件源進行監(jiān)視,以便對發(fā)生的事件作出處理。Java運行系統(tǒng)就自動用**Event類創(chuàng)建了一個對象,即發(fā)生了**Event事件。通知監(jiān)視器,監(jiān)視器就會作出相應的處理。

7.6事件處理事件的接口

Java規(guī)定為了讓監(jiān)視器這個對象能對事件源發(fā)生的事件進行處理,創(chuàng)建該監(jiān)視器對象的類必須聲明實現相應的接口,即必須在類體中給出該接口中所有方法的方法體,那么當事件源發(fā)生事件時,監(jiān)視器就自動調用執(zhí)行被類實現的某個接口方法。7.6事件Java事件的處理過程如圖所示發(fā)生XXX事件事件源.addXXXListener(監(jiān)視器)ClassAimplementsXXXListener{接口方法(XXXe){}}類A負責創(chuàng)建監(jiān)視器,A必須實現XXXListener接口7.6事件文本框的事件處理7.6事件

在GUI程序設計中,對話框是比較常用的一類組件,提供信息提示、文件選擇和顏色設置等功能。主要的對話框有:消息對話框確認對話框文件對話框顏色對話框7.7對話框消息對話框

應用程序在進行一個重要的操作動作之前,最好能彈出一個消息對話框??梢杂胘avax.swing包中的JOption

溫馨提示

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

評論

0/150

提交評論