Ch12圖形用戶界面_第1頁
Ch12圖形用戶界面_第2頁
Ch12圖形用戶界面_第3頁
Ch12圖形用戶界面_第4頁
Ch12圖形用戶界面_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1第12章圖形用戶界面基礎(chǔ)2動因為JavaGUI程序設(shè)計而設(shè)計的API是如何應(yīng)用面向?qū)ο笤瓌t的絕佳范例。從本章開始將學(xué)習(xí)JavaGUIAPI的框架結(jié)構(gòu),還要學(xué)習(xí)如何使用GUI組件為應(yīng)用程序和applet開發(fā)用戶友好接口。3學(xué)習(xí)目標(biāo)區(qū)分Swing和AWT的不同(第12.2節(jié))。描述JavaGUIAPI的層次體系結(jié)構(gòu)(第12.3節(jié))。使用框架、面板和簡單GUI組件創(chuàng)建用戶界面(第12.4節(jié))。理解布局管理器的作用(第12.5節(jié))。使用FlowLayout、GridLayout和BorderLayout管理器在一個容器中布局組件(第12.5節(jié))。使用JPanel類將面板作為一個子容器(第12.6節(jié))。使用Color類和Font類指定顏色和字體(第12.7-12.8節(jié))。將邊界、工具提示、字體和顏色等常用特性應(yīng)用在Swing組件上(第12.9節(jié))。使用邊界可視化地將用戶界面組件分組(第12.9節(jié))。使用ImageIcon類創(chuàng)建圖形圖標(biāo)

(第12.10節(jié))。4創(chuàng)建GUI對象//CreateabuttonwithtextOKJButtonjbtOK=newJButton("OK");

//Createalabelwithtext"Enteryourname:"JLabeljlblName=newJLabel("Enteryourname:");

//Createatextfieldwithtext"TypeNameHere"JTextFieldjtfName=newJTextField("TypeNameHere");

//CreateacheckboxwithtextboldJCheckBoxjchkBold=newJCheckBox("Bold");

//CreatearadiobuttonwithtextredJRadioButtonjrbRed=newJRadioButton("Red");

//Createacomboboxwithchoicesred,green,andblueJComboBoxjcboColor=newJComboBox(newString[]{"Red","Green","Blue"});按鈕標(biāo)簽文本域復(fù)選框單選按鈕組合框5Swing和AWT為什么GUI組件的類名都有前綴J呢?為什么不是簡單地將它命名為Button,而是使用JButton來命名呢?因為,事實上,在包java.awt中已經(jīng)有一個名為Button的類。介紹Java的時候,圖形用戶界面相關(guān)的類都被捆綁在一起,放在一個被稱為抽象窗口工具箱(AbstractWindowsToolkit,AWT)的庫中。對于每個運行Java的平臺,AWT組件都會通過它們各自的代理(被稱作peer)自動映射特定平臺的組件。AWT適合開發(fā)簡單的圖形用戶界面,但不適合開發(fā)復(fù)雜的GUI項目。除此之外,AWT更容易發(fā)生與特定平臺相關(guān)的故障因為它的基于peer方法嚴(yán)重依賴底層平臺。AWT的用戶界面組件就被一種更穩(wěn)定、更通用和更靈活的庫取代,這種庫稱為Swing組件庫。大多數(shù)Swing組件都是直接用Java代碼在畫布上繪圖的,而java.awt.Window或java.awt.Panel的子類的組件例外,它們必須使用特定平臺上自己的GUI來繪圖。Swing組件更少地依賴于目標(biāo)平臺并且更少地使用自己的GUI資源。因此,不依賴于自己GUI的Swing組件稱為輕量級組件(lightweightcomponent),而AWT組件稱為重量級組件(heavyweightcomponent)。6GUI類的層次結(jié)構(gòu)(Swing)7容器類容器類可以包含其它GUI組件8輔助類都不是Component的子類。它們用來描述GUI組件的屬性,例如:圖形的內(nèi)容、顏色、字體以及大小尺寸等。GUI輔助類9SwingGUI組件10簡單版本的組件11復(fù)雜版本的組件12AWT(可選的)13框架框架就是一個沒有包含在另一個窗口里的窗口??蚣苁荍avaGUI應(yīng)用程序中用來存放用戶界面組件的基礎(chǔ)。使用Jframe類創(chuàng)建一個窗口。對于SwingGUI程序而言,使用Jframe類來創(chuàng)建窗口。14創(chuàng)建一個框架Runimportjavax.swing.*;publicclassMyFrame{publicstaticvoidmain(String[]args){JFrameframe=newJFrame("TestFrame");frame.setSize(400,300);frame.setVisible(true);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}MyFrame15向框架中添加組件//Addabuttonintotheframeframe.add(newJButton("OK"));RunMyFrameWithComponents標(biāo)題欄內(nèi)容窗格16JDK1.5版本中的內(nèi)容窗格//Addabuttonintotheframeframe.getContentPane().add(newJButton("OK"));標(biāo)題欄內(nèi)容窗格//Addabuttonintotheframeframe.add(newJButton("OK"));17Jframe類18布局管理器Java的布局管理器提供了一種層面的抽象,自動將用戶界面映射到所有的窗口系統(tǒng)。UI組件都放置在容器中。每個容器都有一個布局管理器來管理容器內(nèi)的UI。使用容器內(nèi)的setLayout(LayoutManager)方法在容器中設(shè)置布局管理器。19布局管理器的種類FlowLayout(Chapter13)GridLayout(Chapter13)BorderLayout(Chapter13)一些其它布局管理器將會在第33章“容器、布局管理器和邊框”中介紹。20FlowLayout舉例編寫一個程序,這個程序使用FlowLayout管理器向這個框架添加三個標(biāo)簽和文本域。ShowFlowLayoutRun21FlowLayout類22GridLayout舉例使用GridLayout管理器而不是FlowLayout管理器來重新編寫前面的程序,顯示標(biāo)簽和文本域。ShowGridLayoutRun23GridLayout類24BorderLayout管理器BorderLayout管理器將容器分為五個區(qū)域:東區(qū)、南區(qū)、西區(qū)、北區(qū)和中央。使用add方法可以將組件添加到BorderLayout中。add(Component,constraint),

這里的constraint是一個常量,取值為

BorderLayout.EAST、BorderLayout.SOUTH、BorderLayout.WEST、BorderLayout.NORTH或BorderLayout.CENTER。25BorderLayout舉例ShowBorderLayoutRun26BorderLayout類27Color類可以使用java.awt.Color類為GUI組件設(shè)置顏色。顏色是由紅、綠、藍(lán)這三原色構(gòu)成的,每種原色都用一個int值表示它的深度,取值范圍從0(最暗度)到255(最亮度)。這就是通常所說的RGB模式。Colorc=newColor(r,g,b);其中r、g和b指定某種顏色的紅、綠、藍(lán)成分。例如:Colorc=newColor(228,100,255);28標(biāo)準(zhǔn)顏色java.awt.Color中定義了13種標(biāo)準(zhǔn)顏色的常量(black黑色、blue藍(lán)色、cyan青色、darkGray深灰、gray灰色、green綠色、lightGray淡灰、magenta洋紅、orange橘色、pink粉紅、red紅色、white白色、yellow黃色)之一。這些標(biāo)準(zhǔn)顏色名都是常量,但是它們都是第一個單詞全小寫之后每個單詞的首字母大寫來命名。這樣,顏色名違反了Java的命名規(guī)則。從JDK1.4起,你也可以使用下面這些新的常量:BLACK、BLUE、CYAN、DARK_GRAY、GRAY、GREEN、LIGHT_GRAY、MAGENTA、ORANGE、PINK、RED、WHITE和YELLOW。29設(shè)置顏色可以使用下面方法來設(shè)置組件的背景色和前景色:setBackground(Colorc)setForeground(Colorc)例如:jbt.setBackground(Color.yellow);jbt.setForeground(Color.red);30Font類FontmyFont=newFont(name,style,size);舉例:FontmyFont=newFont("SansSerif",Font.BOLD,16);FontmyFont=newFont("Serif",Font.BOLD+Font.ITALIC,12);JButtonjbtOK=newJButton("OK“);jbtOK.setFont(myFont);字體名在所有平臺上所支持的標(biāo)準(zhǔn)字體名是:SansSerif,Serif,Monospaced,Dialog或DialogInput。字體風(fēng)格Font.PLAIN(0),Font.BOLD(1),Font.ITALIC(2)和Font.BOLD+Font.ITALIC(3)31獲取所有可用的字體名GraphicsEnvironmente=GraphicsEnvironment.getLocalGraphicsEnvironment();String[]fontnames=e.getAvailableFontFamilyNames();for(inti=0;i<fontnames.length;i++)System.out.println(fontnames[i]);java.awt.GraphicsEnvironment32使用面板作為子容器面板的作用就是分組放置用戶界面組件的子容器。建議將用戶界面組件放置在面板中,然后將這個面板添加到框架中。也可以將面板放置在另一個面板中。為了將一個組件加入JFrame中,我們事實上將組件添加到JFrame的面板窗格中。為了將一個組件加入一個面板中,我們直接使用add方法將它加入面板。33創(chuàng)建一個JPanel使用newJPanel()來創(chuàng)建一個默認(rèn)為FlowLayout管理器的面板或者使用newJPanel(LayoutManager)來創(chuàng)建一個帶指定布局管理器的面板。使用add(Component)方法向面板添加一個組件。例如:JPanelp=newJPanel();p.add(newJButton("OK"));34測試Panel的例子這個例子使用面板來管理組件。這個程序創(chuàng)建一個微波爐的用戶界面。TestPanelsRun35Swing組件的公共特性36邊界你可以給JComponent類的任何對象設(shè)置邊界。Swing具有各種類型的邊界。為了創(chuàng)建一個帶標(biāo)題的邊界,使用newTitledBorder(Stringtitle)

為了創(chuàng)建一個線邊界,使用newLineBorder(Colorcolor,intwidth)這里的width表明線的粗細(xì)。例如:下面的代碼在面板上顯示一個帶標(biāo)題的邊界:JPanelpanel=

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論