《JAVA程序設(shè)計》課件-項目八 軟件使用_第1頁
《JAVA程序設(shè)計》課件-項目八 軟件使用_第2頁
《JAVA程序設(shè)計》課件-項目八 軟件使用_第3頁
《JAVA程序設(shè)計》課件-項目八 軟件使用_第4頁
《JAVA程序設(shè)計》課件-項目八 軟件使用_第5頁
已閱讀5頁,還剩71頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

JAVA程序設(shè)計功能分析(界面)任務(wù)分析分析學(xué)生成績管理系統(tǒng)的功能用戶登錄數(shù)據(jù)錄入數(shù)據(jù)修改數(shù)據(jù)刪除數(shù)據(jù)查詢數(shù)據(jù)顯示8.1概述GUI:GraphicsUserInterface,即圖形用戶界面,通過它可以方便進在用戶和程序之間進行交互。AWTSwing常用的開發(fā)圖形界面的包有兩個一、AWT簡介常用的AWT開發(fā)包主要有兩個包含創(chuàng)建用戶界面和繪制圖形圖像的所有類。提供處理由AWT組件所引發(fā)的各類事件的接口和類。java.awt.event(1)感覺過敏AWT是JavaAPI的一部分,它為開發(fā)圖形用戶界面提供了實現(xiàn)各種組件、布局管理器和事件處理器的類和接口。二、Swing簡介1Swing是第二代GUI開發(fā)工具集,是構(gòu)筑在AWT上層的一組GUI組件的集合,為保證可移植性,它完全用Java語言編寫,與AWT相比,Swing提供了更完整的組件,引入了許多新的特性和能力。32通常將Swing組件稱為輕量級組件,將AWT組件稱為重量級組件。盡量不要將AWT和Swing組件混合使用,容易出現(xiàn)BUG。三、AWT的組件類GUI組件按照功能可分為容器組件和基本組件。12容器組件是用以容納與組織其他界面成分和元素的組件?;窘M件是圖形用戶界面的基本單位,其自身不能再包含其它界面元素,基本組件充當(dāng)著人機交互的媒介,可以接受來自用戶的鼠標動作或鍵盤輸入,能夠以文本、圖形等方式向用戶顯示信息等。三、AWT的組件類Component:絕大多數(shù)GUI窗口元素的父類。MenuComponent:AWT菜單體系的父類。抽象類。Event:Java中提供事件處理機制的重要類。Graphics:與繪圖及圖形顯示相關(guān)的一個類。幾個重要的AWT組件類四、Component(組件)類Component類是AWT包中的一個抽象類,Java中的圖形組件大多數(shù)都是Component類的子類。JComponent類繼承自Component類,常用的Swing組件,如JLabel、JButton等都是JComponent類的子類。四、Component(組件)類由于Component為是所有圖形組件類的直接或間接父類,它包含許多圖形組件類共有的成員變量和方法。四、Component(組件)類1、常用的成員變量LEFT_ALIGNMENTRIGHT_ALIGNMENT2、構(gòu)造方法Component()四、Component(組件)類3、常用方法voidadd(Componentcomp)01voidsetForeground(Colorc)02voidsetFont(Fontf)03voidsetVisible(booleanb)04用于在容器組件內(nèi)添加組件。四、Component(組件)類3、常用方法voidsetLocation(intx,inty)05voidsetSize(intw,inth)06voidsetBounds(intx,inty,intw,inth)07五、Container(容器)類Container類是AWT包中的類,主要用來放置其它組件,所以稱作“容器”,它直接繼承自Component類。voidremove(Componentcomp)voidsetLayout(LayoutManagermgr)主要方法在AWT包中容器類派生的子類有:窗口(Window)、面板(Panel)、對話框(Dialog)、滾動面板(ScrollPane)等。六、Swing容器及組件Swing組件分為頂層容器、中間層容器和基本組件3種類型。132頂層容器有4個:JWindow、JFrame、JDialog、JApplet,它們都屬于重量級組件。JComponent類是所有輕量級組件的父類,它是AWT包中容器類Container類的子類,因此,所有的輕量級組件也都是容器。中間層容器介于頂層容器和一般Swing組件之間,常用的有JPanel、JScrollPane、JSplitPane、JInternalFrame。頂層容器都含有一個默認的內(nèi)容面板,可供Swing組件放入其中。任務(wù)實施演示學(xué)生成績管理系統(tǒng)的執(zhí)行過程。任務(wù)小結(jié)通過任務(wù)分析和學(xué)習(xí),學(xué)生主要了解學(xué)生成績管理系統(tǒng)的基本功能,熟悉GUI組件的相關(guān)知識。任務(wù)分析學(xué)生成績管理系統(tǒng)的主界面如下8.2窗口和菜單一、窗口框架窗口Frame是AWT應(yīng)用程序中最常用的基本窗口組件之一,F(xiàn)rame對象可以有邊框、標題欄、菜單欄、窗口縮放功能按鈕(最大化、最小化、關(guān)閉)。1、JFrame類的常用方法JFrame()JFrame(Stringtitle)publicvoidsetTitle(Stringtitle)publicvoidsetBounds(intx,inty,intw,inth)publicvoidsetSize(intw,inth)publicvoidsetLocation(intx,inty)publicvoidsetVisible(booleanb)pulbicvoidsetLayout(LayoutManagerl)publicvoidsetBackground(Colorc)一、窗口2、創(chuàng)建窗口對象通常需要以下幾個步驟一、窗口010203導(dǎo)入AWT開發(fā)工具包中的所有類。importjava.awt.*。定義用戶類,通常用extends擴展Frame。向窗口內(nèi)添加組件。04在構(gòu)造方法中設(shè)置窗口的標題、位置、大小、顏色、布局等。2、創(chuàng)建窗口對象通常需要以下幾個步驟一、窗口0506使窗口可見。啟動事件處理機制,為窗口設(shè)置關(guān)閉應(yīng)用程序的功能,設(shè)置窗口內(nèi)組件的事件。例:創(chuàng)建一個Frame,藍色背景,大小300*100。3、窗口與屏幕一、窗口Toolkittool=getToolkit();dimensiondim=tool.getScreenSize();intw=dim.width;inth=dim.height;獲取屏幕大小例:使窗口與屏幕大小相同。例:使窗口在屏幕上居中。二、菜單條、菜單、菜單項常用方法:publicvoidadd(Menumenu)將菜單條放置到菜單中的方法,窗口調(diào)用方法setMenuBar(MenuBarbar);構(gòu)造方法:MenuBar()1、菜單條:MenuBar二、菜單條、菜單、菜單項構(gòu)造方法常用方法Menu()Menu(Strings)publicvoidadd(MenuItemitem)publicMenuItemgetItem(intn)publicintgetItemCount()2、菜單:Menu二、菜單條、菜單、菜單項構(gòu)造方法常用方法publicvoidsetEnabled(booleanb)publicStringgetLabel()MenuItem()MenuItem(Strings)3、菜單項:MenuItem二、菜單條、菜單、菜單項使用Menu類的addSeparator()方法。5、復(fù)選框菜單項如果想在選擇這個菜單時出現(xiàn)一個對號標記,可以使用CheckboxMenuItem類創(chuàng)建這個菜單項。6、嵌入子菜單Menu可以不僅添加MenuItem對象,也可以添加Menu對象,被添加的菜單稱為子菜單。4、增加菜單分隔線二、菜單條、菜單、菜單項例:創(chuàng)建一個窗口,添加菜單“窗口顏色”,其中的菜單項有“紅色”、“綠色”、“灰色”8、SWing中的菜單7、菜單項的單擊事件:AtionEventJMenuBarJMenuJMenuItemJCheckBoxMenuItemJPopupMenuJSeparator任務(wù)實施主要特征importjava.awt.*;classMyFrameextendsFrame{

MenuBarm;

Menum1,m2,m3,m4;

MenuItemm11,m12,m13,m14,m15;

……任務(wù)實施主要特征super("學(xué)生成績管理系統(tǒng)");

setBackground(Color.cyan);

setBounds(100,100,400,400);任務(wù)實施主要特征m=newMenuBar();

m1=newMenu(“數(shù)據(jù)維護”);m2=newMenu(“數(shù)據(jù)查詢”);m3=newMenu(“數(shù)據(jù)統(tǒng)計”);m4=newMenu(“系統(tǒng)維護”);

……任務(wù)實施主要特征m.add(m1);

m.add(m2);

……

setMenuBar(m);

setVisible(true);

validate();任務(wù)小結(jié)通過完成任務(wù),主要掌握界面應(yīng)用程序的創(chuàng)建步驟,掌握窗口的屬性,菜單的組成,菜單的建立。任務(wù)分析學(xué)生成績管理系統(tǒng)中,對學(xué)生信息錄入、修改和刪除等操作反映在數(shù)據(jù)庫中,那么通過Java程序如何完成數(shù)據(jù)庫的錄入、修改和刪除操作呢?8.3數(shù)據(jù)庫的插入、更新和刪除publicintexecuteUpdate(Stringsql)

可以對數(shù)據(jù)庫表中的記錄進行更新、添加和刪除。如:

try{

sql.executeUpdate("updatecjsetname='張明遠'wherenumber=101");

}

catch(SQLExceptione)

{}SQL語句對象調(diào)用方法8.4預(yù)編譯的SQL語句對象當(dāng)向數(shù)據(jù)庫發(fā)送一個SQL語句,數(shù)據(jù)庫中的SQL解釋器負責(zé)把SQL語句生成底層的內(nèi)部命令,然后執(zhí)行該命令,完成有關(guān)的數(shù)據(jù)操作。如果不斷地向數(shù)據(jù)庫提交SQL語句勢必增加數(shù)據(jù)庫中SQL解釋器的負擔(dān),影響執(zhí)行的速度如果應(yīng)用程序能針對連接的數(shù)據(jù)庫,事先就將SQL語句解釋為數(shù)據(jù)庫底層的內(nèi)部命令,然后直接讓數(shù)據(jù)庫去執(zhí)行這個命令,顯示不僅減輕了數(shù)據(jù)庫的負擔(dān),而且也提高了訪問數(shù)據(jù)庫的速度。8.4預(yù)編譯的SQL語句對象一、對于JDBC如果使用Connection和某個數(shù)據(jù)庫建立了連接對象con,那么con就可以調(diào)用preparedStatement(Stringsql)

方法對SQL語句進行編譯預(yù)處理,生成該數(shù)據(jù)庫底層的內(nèi)部命令,并將該命令封裝在PreparedStatement對象中,該對象調(diào)用下列方法都可以使得該底層的內(nèi)部命令被數(shù)據(jù)庫執(zhí)行:ResultSetexecuteQuery()booleanexecute()intexecuteUpdate()8.4預(yù)編譯的SQL語句對象二、在對SQL語句進行預(yù)處理時在對SQL語句進行預(yù)處理時可以使用通配符“?”來代替字段的值,只要在預(yù)處理語句執(zhí)行前再設(shè)置通配符所表示的具體值即可。

如:

PreparedStatementsql=con.preparedStatement("select*fromcjwheremath<?");

……

sql.setInt(1,88);

sql.executeQuery();8.5執(zhí)行存儲過程的SQL語句對象CallableStatement:Java用于執(zhí)行SQL存儲過程的接口。Connection對象調(diào)用prepareCall方法獲取CallableStatement對象,如:

CallableStatementcs=conn.prepareCall("{callPROC_ZZH()}");

//調(diào)用存儲過程PROC_ZZH()CallableStatement對象調(diào)用execute()方法執(zhí)行存儲過程,如:

cs.execute();任務(wù)實施對學(xué)生信息錄入窗口,將錄入的數(shù)據(jù)保存到數(shù)據(jù)庫中。任務(wù)小結(jié)通過完成任務(wù),學(xué)生主要掌握通過JDBC將數(shù)據(jù)插入到數(shù)據(jù)庫中,對數(shù)據(jù)庫中的數(shù)據(jù)進行修改和刪除操作,并且能用預(yù)編譯的SQL語句對象解決問題。任務(wù)分析在學(xué)生成績管理系統(tǒng)中,需要錄入學(xué)生的基本信息和成績信息,下面是一個錄入界面。8.3組件一、文本區(qū)TextArea用TextArea創(chuàng)建的對象稱為文本區(qū),用戶可以在文本區(qū)中輸入多行文本。8.3組件一、文本區(qū)TextAreaTextArea()TextArea(Strings)TextArea(intx,inty)構(gòu)造方法8.3組件二、復(fù)選框和單選按鈕組件在AWT中,復(fù)選框和單選框都用Checkbox類來實現(xiàn)。在Swing中,復(fù)選框用JCheckBox實現(xiàn),單選按鈕用JRadioButton實現(xiàn)。二、復(fù)選框和單選按鈕組件1、復(fù)選框JCheckBoxJCheckBox復(fù)選框的名字不僅可以是字符串,還可以是一個圖標。構(gòu)造方法publicJCheckBox()publicJCheckBox(Strings)publicJCheckBox(Strings,booleanb)publicJCheckBox(Iconicon,booleanb)publicJCheckBox(Strings,Iconicon)publicJCheckBox(Strings,Iconicon,boolean常用方法isSelected():組件是否被選中。setSelectedIcon(Iconicon):設(shè)置組件選中時的圖標。二、復(fù)選框和單選按鈕組件1、復(fù)選框JCheckBoxJCheckBox復(fù)選框的名字不僅可以是字符串,還可以是一個圖標。復(fù)選框的事件事件:ItemEvent接口:ItemListener接口方法:itemStateChange(ItemEvente)ItemEvent類的主要方法:

getSource()getItem()getStateChange()

getItemSelectable()二、復(fù)選框和單選按鈕組件2、單選按鈕JRadioButton單選按鈕和復(fù)選框很類似,所不同的是,在若干個復(fù)選框中可以同時選中多個,而一組單選按鈕同一時刻只能有一個被選中,因此,當(dāng)創(chuàng)建若干個單選按鈕后,再使用ButtonGroup再創(chuàng)建一個對象,利用這個對象將這若干個單選按鈕歸組,歸到同一組的單選按鈕每一時刻只能選擇一個。二、復(fù)選框和單選按鈕組件2、單選按鈕JRadioButtonremove():從ButtonGroup對象中刪除一個按鈕。add():用來將一組按鈕加入到ButtonGroup()對象中。構(gòu)造方法ButtonGroup()123ButtonGroup()常用方法三、組合框Choice和JComboBox1、Choice在AWT中,組合框用Choice類來實現(xiàn)。21常用方法構(gòu)造方法publicvoidadd(Stringname)publicvoidinsert(Stringname,intindex)publicvoidremove(Stringname)publicvoidremove(intindex)publicvoidremoveAll()publicChoice()三、組合框Choice和JComboBox1、Choice在AWT中,組合框用Choice類來實現(xiàn)。21常用方法構(gòu)造方法publicintgetSelectedIndex()publicStringgetSelectedItem()publicintgetItemCount()publicvoidselect(intindex)publicvoidselect(Stringname)publicvoidaddItemListener(ItemListenerl)publicChoice()四、列表框List和JList1、List在AWT中,組合框用Choice類來實現(xiàn)。構(gòu)造方法常用方法事件publicList()publicList(intn)publicList(intn,booleanb)publicint[]getSelectedIndexs()publicString[]getSelectedItems()ItemEvent(單擊)ActionEvent(雙擊)任務(wù)實施01

02設(shè)計窗口添加組件任務(wù)小結(jié)通常學(xué)習(xí),主要掌握AWT和Swing一些常用組件的屬性和方法,學(xué)會在應(yīng)用程序窗口中如何添加。8.3組件一、組合框Choice和JComboBox常用方法publicintgetSelectedIndex()publicStringgetSelectedItem()publicintgetItemCount()publicvoidselect(intindex)publicvoidselect(Stringname)publicvoidaddItemListener(ItemListenerl)Choice二、列表框List和JList1、List與組合框相似,不同的是列表框可以多選。構(gòu)造方法常用方法事件publicList()publicList(intn)publicList(intn,booleanb)publicint[]getSelectedIndexs()publicString[]getSelectedItems()ItemEvent(單擊)ActionEvent(雙擊)三、表格JTable1、List表格組件以行和列的形式顯示數(shù)據(jù),允許對表格中的數(shù)據(jù)進行編輯。JTable():創(chuàng)建默認模型表格。JTable(inta,intb):創(chuàng)建a行b列的默認模型表格。JTable(Objectdata[][],ObjectcolumnName[]):創(chuàng)建默認模型表格對象,并且顯示由data指定的二維數(shù)組的值,其列名由數(shù)組columnName指定。構(gòu)造方法01三、表格JTable1、List表格組件以行和列的形式顯示數(shù)據(jù),允許對表格中的數(shù)據(jù)進行編輯。StringgetColumnName(intcol)ObjectgetValueAt(introw,intcol)voidsetValueAt(ObjectaValue,introw,intcol)intgetColumnCount()intgetRowCount()intgetRowEditingRow()intgetEditingRow()voidselectAll()常用方法028.4容器一、面板Panel類Panel類是Container(容器)類的子類,通過Panel類創(chuàng)建的對象稱為面板。Panel型容器的默認布局是FlowLayout型布局。經(jīng)常在一個面板中添加若干個組件后,再把面板放到另一個容器中。8.4容器二、ScrollPane類ScrollPane類是Container(容器)類的子類,通過Panel類創(chuàng)建的對象稱為滾動面板。與Panel不同的是ScrollPane創(chuàng)建的面板帶有滾動條,而且只能向滾動面板添加一個組件。JScrollPane類。8.5布局管理器當(dāng)把組件添加到容器中時,希望控制組件在容器中的位置,這就需要用到布局設(shè)計的知識。FlowLayout:流式布局BorderLayout:邊界式布局GridLayout:網(wǎng)格式布局CardLayout:卡片式布局1234java.awt包中常用的布局類有一、FlowLayout:流式布局FlowLayout類創(chuàng)建的對象稱為流式布局。FlowLayout型布局是Panel型容器的默認布局,即Panel及其子類創(chuàng)建的容器對象,如果不專門為其指定布局,則它們的布局就是FlowLayout。一、FlowLayout:流式布局1、構(gòu)造方法12如:FlowLayoutflow=newFlowLayout();

如果一個容器con使用這個布局對象:

con.setLayout(flow);

那么,con可以使用Container類提供的add方法將組件順序地添加到容器中,組件按照加入的先后順序從左向右排列,一行排滿之后就轉(zhuǎn)到下一行繼續(xù)從左至右排列,每一行中的組件都居中排列,組件之間的默認水平和垂直間隙是5個像素。其中對齊方式aligin可以取值FlowLayout.LEFT、FlowLayout.CENTER、FlowLayout.RIGHT。FlowLayout()FlowLayout(intaligin,inthgap,intvgap)一、FlowLayout:流式布局2、常用函數(shù)publicvoidsetAlignment(intalign)設(shè)置布局的對齊方式。publicvoidsetVgap(intvgap)設(shè)置布局的垂直間隙。publicvoidsetHgap(inthgap)設(shè)置布局的水平間隙。123二、BorderLayout:邊界式布局BorderLayout布局是Window型容器的默認布局。01BorderLayout布局將容器空間簡單地劃分為東、西、北、中5個區(qū)域,中間的區(qū)域最大。每加入一個組件都應(yīng)該指明把這個組件加在哪個區(qū)域中。區(qū)域是由BorderLayout中的靜態(tài)常量CENTER、NORTH、SOUTH、WEST、EAST表示。02二、BorderLayout:邊界式布局例如,一個使用BorderLayout布局的容器con,可以使用add方法將一個組件b添加到中心區(qū)域:con.add(b,BorderLayout.CENTER);

或con.add(BorderLayout.CENTER,b);03添加到某個區(qū)域的組件將占據(jù)整個區(qū)域。每個區(qū)域只能放置一個組件,如果向某個已放置了組件的區(qū)域再放置一個組件,那么先前的組件將被后者替換掉。使用BorderLayout布局的容器最多能添加5個組件,如果容器中需要加入超過5個組件,就必須使用容器的嵌套或改用其他的布局策略。三、CardLayout:卡片式布局使用CardLayout的容器可以容納多個組件,但實際上同一時刻只能從這些組件中選出一個來顯示,就像一疊“撲克牌”每次只能顯示最上面一張一樣,這個被顯示的組件將占據(jù)所有的容器空間,依次排序。三、CardLayout:卡片式布局假設(shè)有一個容器con,使用CardLayout的一般步驟如下:1創(chuàng)建CardLayout對象作為布局,如,CardLayoutcard=newCardLayout();2使用容器的setLayout()方法為容器設(shè)置布局,如,con.setLayout(card);3調(diào)用容器的方法add(Strings,Complnnemtb)將組件b加入容器,并給出了顯示該組件的代號s。組件的代號是另外給的,和組件的名字沒有必然聯(lián)系。不同的組件代號互不相同。最先加入con的是第一張,依次排序。三、CardLayout:卡片式布局假設(shè)有一個容

溫馨提示

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

評論

0/150

提交評論