版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、JDBC數(shù)據(jù)庫編程第10章2目標(biāo)JDBC的概念 JDBC的連接數(shù)據(jù)庫的過程。在此過程使用到的對象。JDBC實例310.1 JDBC 概念 3-11、JDBC 任務(wù)JDBC 是一個緊湊、簡單的軟件層JDBC API 定義應(yīng)用程序如何:打開連接與數(shù)據(jù)庫通信執(zhí)行 SQL 語句 檢索查詢結(jié)果410.1 JDBC 概念 3-22、與ODBC的比較ODBC不適合Java中直接使用,它是一個c語言的API。不限制傳遞到底層 DBMS 驅(qū)動程序的查詢類型 JDBC 機(jī)制易于理解和使用提供與 Java 系統(tǒng)的其他部分保持一致的 Java 接口JDBC 可以調(diào)用常見 SQL語句510.1 JDBC 概念 3-33
2、、JDBC 支持兩種模型:二層模型Java應(yīng)用程序直接與數(shù)據(jù)庫交互被稱為客戶端/服務(wù)器配置三層模型使用中間層(JavaBean)可以在不同語言中實現(xiàn)中間層610.2.1 JDBC 驅(qū)動程序3-11、驅(qū)動程序類型JDBC驅(qū)動程序的類型JDBC-ODBC 橋加 ODBC 驅(qū)動程序本地協(xié)議純 Java 驅(qū)動程序JDBC 網(wǎng)絡(luò)純 Java 驅(qū)動程序本地 API710.2.1 JDBC 驅(qū)動程序3-2JDBC-ODBC橋優(yōu)點: 簡單初學(xué)容易。缺點: 需要設(shè)置ODBC,浪費(fèi)時間,并且受到限制。服務(wù)器Java程序JDBC-ODBCODBC本地函數(shù)810.2.1 JDBC 驅(qū)動程序3-3本地純Java驅(qū)動優(yōu)點
3、: 性能較高。缺點: 程序員必須要有JDBC驅(qū)動程序,而且不同數(shù)據(jù)庫還不同。服務(wù)器Java程序本地JDBC910.2.2 訪問數(shù)據(jù)庫11-11、數(shù)據(jù)庫操作過程 下載不同數(shù)據(jù)庫需要的JDBC驅(qū)動程序。 加載驅(qū)動程序。 創(chuàng)建連接。 創(chuàng)建執(zhí)行SQL語句的對象。 執(zhí)行查詢數(shù)據(jù)。 處理查詢結(jié)果。 關(guān)閉數(shù)據(jù)庫。 下載不同數(shù)據(jù)庫需要的JDBC驅(qū)動程序。 加載驅(qū)動程序。 創(chuàng)建連接。 創(chuàng)建執(zhí)行SQL語句的對象。 執(zhí)行查詢數(shù)據(jù)。 處理查詢結(jié)果。 關(guān)閉數(shù)據(jù)庫。1010.2.2 訪問數(shù)據(jù)庫11-2下載需要的驅(qū)動Oracle:。SQL Server:微軟官方網(wǎng)站下載MSSQLSERVER.JARDB2:下載db2jav
4、a.zipMySQL:/mm.mysql/SyBase:Informix:1110.2.2 訪問數(shù)據(jù)庫11-3加載Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); 建立連接 Connection conn = DriverManager.getConnection(URL, login_name, login_password);1210.2.2 訪問數(shù)據(jù)庫11-4創(chuàng)建Statement對象Statement 對象將 SQL 語句發(fā)送
5、到 DBMS Statement stmt = conn.createStatement(); Statement 對象的方法:executeUpdate()用來創(chuàng)建和更新表stmt.executeUpdate(query);1310.2.2 訪問數(shù)據(jù)庫11-5executeQuery()對于SELECT 語句stmt.executeQuery(query); 返回ResultSetResultSet rs stmt.executeQuery(query);execute()stmt.execute(); 返回布爾值,用于執(zhí)行任何 SQL 語句。1410.2.2 訪問數(shù)據(jù)庫11-6DDL 命令
6、包括create、alter 和 dropstat.executeUpdate(create table Customer (CustIdnumber(3),CustNamevarchar2(15),Address varchar2(30); DML 命令包括select、insert、update和deleteRecordSet recset = stat.executeQuery(select * from customer); 1510.2.2 訪問數(shù)據(jù)庫11-7 ResultSet 對象包含 SQL 語句的執(zhí)行結(jié)果 next()方法移動游標(biāo)指向當(dāng)前結(jié)果。 使用 getXXX 方法檢索數(shù)
7、據(jù)getInt() 用于檢索整型值getString() 用于檢索字符串值1610.2.2 訪問數(shù)據(jù)庫11-8關(guān)閉數(shù)據(jù)庫關(guān)閉 Statement 對象stmt.close();關(guān)閉 Connection 對象conn.close(); 1710.2.2 訪問數(shù)據(jù)庫11-92、處理過程中涉及的對象JDBC驅(qū)動程序包括兩種:連接數(shù)據(jù)庫接口:Driver、DriverManager。執(zhí)行SQL語句和返回結(jié)果集的接口: Connection、Statement、PrepareStatement、ResultSet接口。1810.2.2 訪問數(shù)據(jù)庫11-10Driver接口用于讀取數(shù)據(jù)庫驅(qū)動的基本信息,
8、提供了connect()方法建立訪問數(shù)據(jù)庫所用的Connection對象。DriverManager提供了連接數(shù)據(jù)庫的另外一種方式,用來管理Driver對象,提供了注冊驅(qū)動、獲得連接及向數(shù)據(jù)庫輸出流發(fā)送信息等方法。方法:getConnection()。1910.2.2 訪問數(shù)據(jù)庫11-11Connection:連接數(shù)據(jù)庫和Java應(yīng)用程序之間的主要對象,使用createStatement()方法創(chuàng)建Statement對象,代表對特定數(shù)據(jù)庫的連接。Statement:對一個特定數(shù)據(jù)庫執(zhí)行SQL語句。常用方法:executeQuery(SQL)、executeUpdate()、close()。Re
9、sultSet:它是對一個一般寬度和未知長度的表的一種抽象。常用方法:next()、close()、2010.3 訪問數(shù)據(jù)庫實例3-13、數(shù)據(jù)庫操作實例 使用JTable顯示和添加員工資料到數(shù)據(jù)庫中。2110.3 訪問數(shù)據(jù)庫實例3-21、通過JDBC-ODBC數(shù)據(jù)源連接數(shù)據(jù)庫建立數(shù)據(jù)源代碼如下:import java.sql.*; public class DBConnect Connection conn=null; /數(shù)據(jù)庫連接對象 public Connection getConn() tryClass.forName(sun.jdbc.odbc.JdbcOdbcDriver); con
10、n = DriverManager.getConnection( jdbc:odbc:tongxin,); catch(Exception e) return conn; 數(shù)據(jù)源名稱2210.3 訪問數(shù)據(jù)庫實例3-32、通過JDBC直接驅(qū)動連接數(shù)據(jù)庫try /連接數(shù)據(jù)庫 Class.forName(“ com.microsoft.jdbc.sqlserver.SQLServerDriver); con=DriverManager.getConnection(“ jdbc:microsoft:sqlserver:/localhost:1433; DatabaseName=shopcart,sa,
11、sql); /創(chuàng)建執(zhí)行SQL語句的對象 sql=con.createStatement(); /執(zhí)行SQL語句并保存結(jié)果 rs=sql.executeQuery(SELECT * FROM product); 23總結(jié)JDBC的概念,與ODBC的不同。 JDBC的使用數(shù)據(jù)庫處理的過程以及涉及到的對象。Connection:代表數(shù)據(jù)庫連接的對象。Statement:執(zhí)行SQL語句的對象。ResultSet:保存執(zhí)行結(jié)果的對象。圖形用戶界面設(shè)計第11章25目標(biāo)GUI相關(guān)概念 布局管理器 事件處理 常用Swing組件 2611.1.1 GUI包和簡單GUI程序2-1 1java.awt包 稱為抽象窗
12、口工具集AWT(Abstract Window Toolkit),是使用Java進(jìn)行GUI設(shè)計的基礎(chǔ)。 2javax.swing包 Swing組件存放在javax.swing包中。幾乎所有AWT組件對應(yīng)有新功能更強(qiáng)的Swing組件。另外還加入了一些全新的組件。Swing組件在名稱上前面多了一個字母“J” 。2711.1.1 GUI包和簡單GUI程序2-2 3設(shè)置GUI應(yīng)用程序的流程:(1)引用需要的包和類。(2)設(shè)置一個頂層的容器。(3)根據(jù)需要為容器設(shè)置布局管理器或使用默認(rèn)布局管理器。(4)將組件添加到容器內(nèi),位置自行設(shè)計。(5)為響應(yīng)事件的組件編寫事件處理代碼。2811.1.2 容器、組件
13、、布局和觀感 1.容器和組件 組件是可以用圖形化的方式顯示在屏幕上并能夠與用戶進(jìn)行交互的對象。 容器是一種特殊的組件,一種能夠容納其他組件或容器的組件。2.布局管理器 為了使圖形用戶界面具有良好的平臺無關(guān)性,提供了專門用來管理組件在容器中的布局的工具。3.觀感 決定swing應(yīng)用程序的外觀。2911.2 布局管理器Java中的布局類型包括以下幾種:FlowLayout(流式布局)BorderLayout (邊界布局) GridLayout(網(wǎng)格布局)CardLayout (卡片布局) GridBagLayout(網(wǎng)格包布局)3011.2.1 FlowLayout布局管理器FlowLayout的
14、構(gòu)造函數(shù)有:FlowLayout( ):生成一個默認(rèn)的流式布局FlowLayout(int alignment):可以設(shè)定每一行組件的對齊方式 FlowLayout(int alignment,int horz,int vert):可以設(shè)定組件間的水平和垂直距離 Applet和面板的缺省布局 組件從左上角開始按從左到右、從上到下的方式排列FlowLayout mylayout = new FlowLayout();FlowLayout exLayout = new FlowLayout(FlowLayout.RIGHT);setLayout(exlayout); / 為容器設(shè)置新布局 3111
15、.2.2 BorderLayout布局管理器下面是BorderLayout所定義的構(gòu)造函數(shù):- BorderLayout( ):生成默認(rèn)的邊界布局- BorderLayout(int horz,int vert): 可以設(shè)定組件間的水平和垂直距離窗口、框架和對話框等的缺省布局組件被置于容器的北、南、東、西或中間位置. . . setLayout(new BorderLayout(); Button btnEast=new Button(東); Button btnWest=new Button(西); Button btnNorth=new Button(北); Button btnSouth
16、=new Button(南); Button btnCenter=new Button(中); add(btnEast,BorderLayout.EAST); add(btnWest,BorderLayout.WEST); add(btnNorth,BorderLayout.NORTH); add(btnSouth,BorderLayout.SOUTH); add(btnCenter,BorderLayout.CENTER);3211.2.3 GridLayout布局管理器GridLayout的構(gòu)造函數(shù)如下所示: - GridLayout():生成一個單列的網(wǎng)格布局 - GridLayout(
17、int row,int col):生成一個設(shè)定行數(shù)和列數(shù)的網(wǎng)格布局 - GridLayout(int row,int col,int horz,int vert):可以設(shè)置組件之間的水平和垂直間隔用于將容器區(qū)域劃分為一個矩形網(wǎng)格組件按行和列排列. . . Button btn; / 聲明按鈕數(shù)組 String str=1,2,3,4,5,6,7,8,9; setLayout(new GridLayout(3,3); btn=new Buttonstr.length; / 創(chuàng)建按鈕數(shù)組 for(int i=0;istr.length;i+) btni=new Button(stri); add(
18、btni); 3311.2.4 CardLayout布局管理器可存儲幾個不同的布局。每個布局就像是一個卡片組中的一張卡片。在一個給定的時間總會有一張卡片在頂層。卡片通常為一個 Panel 對象。 每當(dāng)需要許多面板切換,而每個面板需要顯示為不同布局時,可以使用卡片布局。3411.2.5 GridBagLayout布局管理器通過使用以下語法容器可獲得 GridBagLayout:GridBagLayout gb=new GridBagLayout();ContainerName.setLayout(gb);要使用此布局,必須提供各組件的大小和布局等信息。GridBagConstraints 類中包
19、含 GridBagLayout 類用來定位及調(diào)整組件大小所需的全部信息。 組件大小不必相同 組件按行和列排列 放置順序不一定為從左至右和由上至下35GridBagConstraints 類 2-1成員變量列表:gridx, gridy : 指定組件放置于哪個單元中g(shù)ridwidth, gridheight : 指定組件將占用多少行和多少列weightx, weighty : 指定在一個 GridBagLayout 中應(yīng)如何分配空間,這些變量的缺省值為 0ipadx, ipady : 指定組件的最小高度和寬度36成員變量列表:fill : 指定在單元大于組件的情況下,組件如何填充此單元,共有4可
20、選值。缺省值為:GridBagConstraints.NONEanchor : 指定將組件放置在單元中的位置,共有9個可選值。缺省值為:GridBagConstraints.CENTER GridBagConstraints 類2-23711.2.6 swing布局管理器 1. BoxLayout布局管理器 按照從上到下(即Y軸)或者從左到右(即X軸)的順序來依次排列組件。2.ScrollPaneLayout布局管理器是JScrollPane中的內(nèi)置布局管理器,所以不需要單獨(dú)創(chuàng)建,會自動設(shè)置。3811.2.7 Null布局管理器在某些情況下,用戶不想使用布局管理器,需要自己設(shè)置組件的位置和大小
21、,這時應(yīng)取消容器的布局管理器,然后再進(jìn)行設(shè)置,否則用戶自定義設(shè)置將會被布局管理器覆蓋。取消布局管理器的方法是: setLayout(null); 用戶使用setLocation()、setSize()、setBounds()等方法為組件設(shè)置位置和大小。需要注意的是,這種方法會導(dǎo)致程序與系統(tǒng)相關(guān),如不同的分辨率會產(chǎn)生不同的效果。 3911.3.1 事件處理模型Java 最新的事件處理方法是基于授權(quán)事件模型 當(dāng)事件來源對象因用戶的操作(鼠標(biāo)或鍵盤),系統(tǒng)會自動觸發(fā)此事件類對象E,并通知所授權(quán)的事件監(jiān)聽者A(若來源對象已向A注冊),事件監(jiān)聽者A中有處理各種事件的方法(事件處理者1n)便會處理此事件E
22、的各種狀況 。4011.3.2 事件層次結(jié)構(gòu)2-1事件類說明事件源ActionEvent 通常按下按鈕,雙擊列表項或選中一個菜單項時,就會生成此事件。 Button、List、MenuItem、TextField AdjustmentEvent 操縱滾動條時會生成此事件。 Scrollbar ComponentEvent 當(dāng)一個組件移動、隱藏、調(diào)整大小或成為可見時會生成此事件。Component ItemEvent 單擊復(fù)選框或列表項時,或者當(dāng)一個選擇框或一個可選菜單的項被選擇或取消時生成此事件。 Checkbox、CheckboxMenuItem、Choice、List FocusEvent
23、 組件獲得或失去鍵盤焦點時會生成此事件。 Component4111.3.2 事件層次結(jié)構(gòu)2-2事件類說明事件源KeyEvent 接收到鍵盤輸入時會生成此事件。 Component MouseEvent 拖動、移動、單擊、按下或釋放鼠標(biāo)或在鼠標(biāo)進(jìn)入或退出一個組件時,會生成此事件。 Component ContainerEvent 將組件添加至容器或從中刪除時會生成此事件。Container TextEvent 在文本區(qū)或文本域的文本改變時會生成此事件 。TextField、TextArea WindowEvent 當(dāng)一個窗口激活、關(guān)閉、失效、恢復(fù)、最小化、打開或退出時會生成此事件。 Windo
24、w 4211.3.3 事件處理方法 實現(xiàn)事件監(jiān)聽器接口法:首先給組件注冊監(jiān)聽器,使用下列方法: addxxxListener(事件監(jiān)聽器對象); 確定了事件監(jiān)聽器的類型后,必須在程序中定義類來實現(xiàn)這些接口,重寫接口中的所有方法。addKeyListener(new CharType(); public class CharType implements KeyListenerpublic void keyPressed(KeyEvent e) /大括號中為處理事件的代碼public void keyReleased(KeyEvent e) /未用到此方法,所以方法體為空public void
25、keyTyped(KeyEvent e) 4311.3.4 事件適配器 使用實現(xiàn)事件監(jiān)聽器接口的方法處理事件時,必須重寫監(jiān)聽器接口中的所有方法,盡管有些方法不會用到。繼承事件適配器類,只需要重寫所需要的方法即可。addKeyListener(new CharType(); 為事件源注冊事件監(jiān)聽器的方法同上。public class CharType extends KeyAdapter public void keyPressed(KeyEvent e)/大括號中為處理事件的代碼 4411.4.1 常用容器組件3-1 是放置其他 Swing 組件的頂級容器JFrame 組件用于在 Swing
26、程序中創(chuàng)建窗體它的構(gòu)造函數(shù):JFrame()JFrame(String Title)組件必須添加至內(nèi)容窗格,而不是直接添加至 JFrame 對象,示例: frame.getContentPane().add(b);4511.4.1 常用容器組件3-2JPanel 組件是一個中間容器用于將小型的輕量級組件組合在一起JPanel 的缺省布局為 FlowLayoutJPanel 具有下列構(gòu)造函數(shù):JPanel()JPanel(LayoutManager lm)4611.4.1 常用容器組件3-3 JApplet也是一種窗口容器,繼承自Applet類,Applet小程序是另一種Java程序,與Appl
27、et不同的是,它默認(rèn)的布局管理器是JAppletBorderLayout,而Applet默認(rèn)的布局管理器是FlowLayout??芍苯酉駻pplet窗口中添加組件,但JApplet不行,添加組件時必須添加到其內(nèi)容窗格中。得到內(nèi)容窗格使用方法: getContentPane(); 4711.4.2 標(biāo)簽(JLabel) 它既可以顯示文本也可以顯示圖像構(gòu)造函數(shù)如下:JLabel(Icon icon):icon表示使用的圖標(biāo)JLabel(String text,Icon icon,int align):text表示使用的字符串; icon表示使用的圖標(biāo);align表示水平對齊方式,其值可以為:LEF
28、T、RIGHT、CENTER。其它常用方法 getText() setText(String text)4811.4.3 按鈕(JButton) 可以使用以下任一構(gòu)造函數(shù)來創(chuàng)建按鈕:JButton() : 新建一個空的按鈕JButton(Icon icon)JButton(String text)JButton(String text, Icon icon)JButton btnOk=new JButton(確定!);JButton btnCancel=new JButton(取消!); getContentPane.add(btnOk);getContentPane.add(btnCance
29、l);4911.4.4 文本框-JTextFieldJTextField 組件允許輸入或編輯單行文本此類的構(gòu)造函數(shù)包括:JTextField()JTextField(Document doc, String text, int columns)JTextField(int columns)JTextField(String text)JTextField(String text, int columns)Container con = getContentPane();con.setLayout(new FlowLayout();JLabel jl = new JLabel(“文本域”); c
30、on.add(jl);JTextField tf = new JTextField(20); con.add(tf); 5011.4.4 文本框-JPasswordFieldJPasswordField 組件允許輸入或編輯單行文本,并且文本被其他字符代替。此類的構(gòu)造函數(shù)與單行文本框類似。其它方法:char getPassword()char getEchoChar()void setEchoChar(char c)5111.4.4 文本框-JTextAreaJTextArea 組件用于接受來自用戶的多行文本它可實現(xiàn)可滾動界面JTextArea 組件可使用下列構(gòu)造函數(shù)創(chuàng)建:JTextArea()
31、JTextArea(int rows, int cols)JTextArea(String text)JTextArea(String text, int rows, int cols)JTextArea(Document doc)JTextArea(Document doc, String text, int rows, int cols)JLabel jl = new JLabel(“文本區(qū)”); con.add(jl);JTextArea ta = new JTextArea(5,10); con.add(ta); 5211.4.5 復(fù)選框-JCheckBox復(fù)選框用于為用戶提供一組選項
32、JCheckBox 類具有下列構(gòu)造函數(shù):JCheckBox()JCheckBox(Icon icon)JCheckBox(Icon icon, boolean selected)JCheckBox(String text)JCheckBox(String text, boolean selected)JCheckBox(String text, Icon icon)JCheckBox(String text, Icon icon, boolean selected)5311.4.6 單選按鈕-JRadioButton單選按鈕允許用戶從多個選項中選擇其中一個ButtonGroup 用于在 Swi
33、ng 中創(chuàng)建組JRadioButton 對象可使用下列構(gòu)造函數(shù)創(chuàng)建:JRadioButton()JRadioButton(Icon icon)JRadioButton(Icon, boolean selected)JRadioButton(String text)JRadioButton(String text, boolean selected)JRadioButton(String text, Icon icon)JRadioButton(String text, Icon icon, boolean selected)5411.4.7 列表框-JListpublic JList() :
34、使用空模型構(gòu)造 JListpublic JList(ListModel dataModel) :構(gòu)造一個列表,用它顯示指定模型中的元素。 public JList (Object listData) :構(gòu)造一個列表以顯示指定數(shù)組listData的元素。 JList 不支持滾動。要啟用滾動,可使用下列代碼: JScrollPane myScrollPane=new JScrollPane();myScrollPane.getViewport().setView(dataList);String stars = 安東尼奧.班德拉斯,來昂納多.迪卡普尼奧, 桑德拉.布洛克,休.格蘭特,朱莉亞.羅伯茨
35、;JList moviestars = new JList(stars); 5511.4.8 組合框-JComboBox文本域和下拉列表的組合在 Swing 中,組合框由 JComboBox 表示構(gòu)造函數(shù)如下:public JComboBox() : 此構(gòu)造函數(shù)使用缺省數(shù)據(jù)模型創(chuàng)建 JComboBoxpublic JComboBox(ComboBoxModel asModel) : 使用現(xiàn)有 ComboBoxModel 中的項目的組合框public JComboBox(Object items) : 包含指定數(shù)組元素的組合框String names = 弗雷德里克.福西斯, 約翰.克里沙姆,
36、瑪麗.希金斯.克拉克,帕特麗夏.康威爾;JComboBox authors = new JComboBox(names); 5611.4.9 滑塊-JSlider JSlider():創(chuàng)建滑塊默認(rèn)范圍為0至100水平方向JSlider(int orientation):創(chuàng)建范圍為0至100,初值為50,水平或垂直滑塊。方向取值為JSlider.HORIZONTAL(水平方向)或JSlider.VERTICAL(垂直方向)。JSlider(int min,int max):創(chuàng)建范圍從min至max,初值min和max的平均值的水平滑塊。JSlider(int min,int max,int va
37、lue):創(chuàng)建范圍從min至max,初值為value的水平滑塊。JSlider(int orientation,int min,int max,int value):創(chuàng)建范圍從min至max初值為value的水平或垂直滑塊。 5711.4.10 菜單3-1菜單顯示項目列表,指明各種任務(wù)。選擇或單擊某個選項時會打開另一個列表或子菜單。Swing 菜單由菜單欄、菜單和菜單項構(gòu)成。菜單欄是所有菜單和菜單項的根5811.4.10 菜單3-2 JMenuBar 是可通過 JFrame、JWindow 的根窗格添加至容器的組件。由多個 JMenu 組成,每個 JMenu 在 JMenubar 中都表示為字
38、符串。JMenu 在 JMenuBar 下以文本字符串形式顯示,而在用戶單擊它時,則以彈出式菜單顯示。JMenuItem為JMenu 中的一個組件,以文本字符串形式顯示,可以具有圖標(biāo),外觀可以修改,如字體、顏色、背景、邊框等。5911.4.10 菜單3-3 彈出式菜單JPopupMenu的定義和使用:方法用途public JMenuItem add(JMenuItem menuItem)將指定菜單項附加至菜單末尾public JMenuItem add(String s)使用指定文本新建菜單項,并將其添加至菜單末尾public void show(Component c, int x, int
39、 y)在組件c的坐標(biāo) (x,y) 位置顯示彈出式菜單public boolean isPopupTrigger()確定鼠標(biāo)事件是否為平臺的彈出觸發(fā)器6011.4.11 對話框 1JOptionPane對話框 是模式對話框,它提供了很多現(xiàn)成的對話框樣式,可以供用戶直接使用。 2JFileChooser對話框 提供了標(biāo)準(zhǔn)的文件的打開、保存對話框。61總結(jié)1、掌握GUI常用的容器。2、掌握GUI常用的布局管理器。3、掌握GUI常用的組件。4、掌握GUI的事件處理機(jī)制。圖形用戶界面設(shè)計第12章63目標(biāo)Java Applet的基本概念 Java Applet程序的創(chuàng)建和執(zhí)行過程 Java Applet與
40、Application的區(qū)別 怎樣在Java Applet中進(jìn)行AWT繪制操作 Java Applet程序間的通信以及和瀏覽器之間的通信 Java Applet的重要應(yīng)用,即在多媒體方面的支持 6412.1.1 Applet基礎(chǔ) Applet 是一種為通過 Web 瀏覽器在 Internet 上工作而設(shè)計的 Java 程序。Applet 是用Java編寫的小應(yīng)用程序,它能夠嵌入在HTML網(wǎng)頁中,并由支持Java的Web瀏覽器來解釋執(zhí)行。6512.1.2 Applet的載入 從 Web 上下載的 java Applet 是在稱為沙箱 (sandbox) 的安全環(huán)境中運(yùn)行的。大多數(shù)瀏覽器上,在沙箱
41、中運(yùn)行時:Applet 絕不能運(yùn)行任何一個本地可執(zhí)行程序。Applet 除了可以與從中下載它們的服務(wù)器進(jìn)行通信外,不能與任何主機(jī)通信。 Applet 不能讀寫本地計算機(jī)的文件系統(tǒng)。Applet 不能查找除版本號等以外的任何關(guān)于本地計算機(jī)的信息。6612.1.3 Applet示例2-1import java.awt.Graphics;import java.applet.Applet;public class JavaApplet extends Applet String print_text; public void init() print_text = “Java Applet; pub
42、lic void paint(Graphics g) g.drawString(print_text, 20, 20); 覆蓋了Applet類的init( ) 方法。該方法主要用于初始化Applet中的變量。 覆蓋了Applet類的paint( )方法。用于在屏幕上給定的位置繪制字符串67Applet源文件首先用 Java 編譯器編譯: javac Firstapplet.java創(chuàng)建一個用于顯示 Applet 的 HTML 文件:12.1.3 Applet示例2-26812.2.1 Applet的類層次及框架結(jié)構(gòu) 要生成Applet小應(yīng)用程序必須創(chuàng)建Applet類或JApplet類的子類,然
43、后根據(jù)用戶的需要,重寫Applet類或Applet類中部分方法的內(nèi)容。 import java.awt.*;import java.applet.*;public class AppletClassName extends Appletpublic void init() /初始化變量、裝載圖片、讀取參數(shù)值等public void start() /啟動程序執(zhí)行或恢復(fù)程序執(zhí)行public void stop() /掛起正在執(zhí)行的程序,暫停程序的執(zhí)行public void destroy() /終止程序的執(zhí)行釋放資源public void paint(Graphics g) /完成繪制圖形等操作
44、 6912.2.1 Applet的生命周期下載實例化init()初始化start()啟動stop()暫停destroy()終止啟動轉(zhuǎn)入后臺重新激活退出7012.2.2 主要方法Applet 根據(jù)執(zhí)行過程中發(fā)生的事件來定義其生命周期。對于每個事件將自動調(diào)用一種方法。方法如下:init() : 初始化時調(diào)用start() :調(diào)用init方法之后自動調(diào)用這個方法 stop() : 退出網(wǎng)頁時停止執(zhí)行Applet程序paint(Graphics g):繪制Applet圖形destroy() : 離線時釋放本對象及其相關(guān)的資源7112.2.3 Applet和HTML2-1標(biāo)記名稱備注標(biāo)志整個HTML文件
45、的開始和結(jié)束設(shè)置瀏覽器窗口的顯示標(biāo)題設(shè)置顯示文件的相關(guān)信息HTML文件的主體部分至設(shè)置文字用指定的標(biāo)題樣式顯示設(shè)置文本的顏色、字體、大小等屬性、設(shè)置文字斜體、粗體、下劃線、刪除線顯示鏈接到指定的HTML文件顯示指定的圖片文件開始一個新的段落顯示指定長度的水平線、設(shè)置對齊方式7212.2.3 Applet和HTML2-2首先確定Applet的存在(*.class文件)。調(diào)用Applet,格式: 定義調(diào)用的Applet程序名,注意全名和大小寫。 Applet與HTML不在一個目錄,定義調(diào)用的Applet的路徑。Applet程序顯示區(qū)的寬度和高度。Applet與其他元素的水平和豎直邊距。Applet
46、的對齊方式。Applet的名字。瀏覽器不支持Applet時,顯示的代替文字。7312.2.4 Applet的執(zhí)行1.要在支持 Java 的瀏覽器中查看 Applet,則需要加載 HTML 文件。 Applet 會顯示為 HTML 網(wǎng)頁的一部分。 要運(yùn)行 Applet,瀏覽器必須啟用 Java 插件2.在命令提示符處鍵入下列代碼: appletviewer JavaApplet.html7412.2.5 Applet 和ApplicationApplet應(yīng)用程序Applet基本上是為部署在Web上而設(shè)計的應(yīng)用程序是為作為獨(dú)立程序工作而設(shè)計的Applet是通過擴(kuò)展 java.applet.Appl
47、et 類創(chuàng)建的應(yīng)用程序則不受這種限制Applet 通過appletviewer或在支持Java的瀏覽器上運(yùn)行應(yīng)用程序使用Java解釋器運(yùn)行Applet 的執(zhí)行從 init() 方法開始應(yīng)用程序的執(zhí)行從 main() 方法開始Applet必須至少包含一個 public 類,否則編譯器就會報告一個錯誤。在該類中不一定要聲明 main( )方法。對于應(yīng)用程序,public 類中必須包括main( ),否則無法運(yùn)行。7512.3.1 AWT繪制基礎(chǔ) 1void paint(Graphics g)方法是進(jìn)行圖形繪制的具體方法。2void update(Graphics g)方法用于更新圖形。首先清除背景
48、,然后設(shè)置前景,再調(diào)用paint()方法完成組件的繪3void repaint()方法 用于重繪圖形。 7612.3.2 在Applet中輸出文字 1.文字輸出drawBytes(byte bt,int offset,int length,int x,int y) drawChars(char ch,int offset,int length,int x,int y) drawString(String str,int x,int y) 2.字體設(shè)置 Font(String name,int style,int size); 3.字體大小設(shè)置FontMetrics getAscent()、ge
49、tDescent()、getHeight()、getLeading() 。 7712.3.3 在Applet中使用顏色 1.構(gòu)造方法:public Color(int r,int g,int b) public Color(float r,float g,float b) public Color(int rgb) 2.其他方法:setColor(Color c),getColor(),setBackground(Color c),getBackground(),setForeground(Color c) ,getForeground() 7812.3.4 在Applet中繪制圖形 abst
50、ract void drawLine(int x1, int y1, int x2, int y2) 在圖形環(huán)境坐標(biāo)系中,從 x1、y1 指定的起始點繪制一條直線到終止點 x2、y2void drawRect( int topx, int topy, int width, int height) 繪制一個左上角坐標(biāo)、寬度和高度已給定的長方形abstract void fillRect (int topx, int topy, int width, int height) 繪制一個左上角坐標(biāo)、寬度和高度已給定的實心長方形abstract void drawOval(int topx, int t
51、opy, int width, int height)繪制一個左上角坐標(biāo)、寬度和高度已給定的橢圓形abstract void fillOval(int topx, int topy, int width, int height) 繪制一個左上角坐標(biāo)、寬度和高度已給定的實心橢圓形abstract void drawArc(int x, int y, int width, int height, int startangle, int degrees)繪制一個 x、y 坐標(biāo)、高度、寬度、起始角以及跨越的度數(shù)已給定的弧形7912.4 Applet的通信1、同頁間的通信 getApplet(Strin
52、g s )在同一個文件中查找名字為s的Applet。 其余了解。2、與瀏覽器的通信 getCodeBase( )得到本身的網(wǎng)絡(luò)地址。 getDocumentBase( )得到HTML文件的地址。 getParameterInfo( )返回參數(shù)信息。 getAppletInfo( )得到Applet本身的信息。8012.5 Applet的應(yīng)用1訪問www資源URL統(tǒng)一資源定位器的簡稱,包括:協(xié)議名和資源名,中間用冒號隔開。例如: 2訪問網(wǎng)絡(luò)資源 getByName(String host) getLocalHost() 81總結(jié)1、掌握Applet的工作機(jī)制和執(zhí)行原理。2、掌握Applet的創(chuàng)建
53、和基本框架結(jié)構(gòu)。3、掌握Applet的主要生命周期和運(yùn)行方法。 4、掌握Graphics 類用于在屏幕上繪制文本、線條、橢圓形和弧形等的對象。5、了解Applet中的信息通信。6、了解Applet的應(yīng)用。多線程第13章83目標(biāo)掌握多線程的概念掌握如何創(chuàng)建線程了解死鎖的概念了解線程同步了解使用 wait() 和 notify() 在線程之間進(jìn)行通信8413.1.1 多線程的概念 程序:靜態(tài)的計算機(jī)高級語言編寫的代碼。進(jìn)程:程序的一次執(zhí)行。線程:程序中的部分代碼的一次執(zhí)行過程。多進(jìn)程:操作系統(tǒng)中多個程序同時執(zhí)行。多線程:程序中多個片斷同時執(zhí)行。8513.1.2 Java中的多線程 Thread類是
54、java.lang包中的一個專門用來創(chuàng)建線程和對線程進(jìn)行操作的類。這些方法分為:構(gòu)造方法。run()方法。改變線程狀態(tài)的方法。操作線程屬性的方法。8613.1.3 線程的狀態(tài)和生命周期新建 : 新建的線程處于新建狀態(tài)就緒 : 在創(chuàng)建線程后,它將處于就緒狀態(tài),等待 start() 方法被調(diào)用執(zhí)行: 線程在開始執(zhí)行時進(jìn)入運(yùn)行狀態(tài)阻塞:在線程等待一個事件時(例如輸入/輸出操作),就稱其處于阻塞狀態(tài)。死亡:在 run() 方法已完成執(zhí)行或其 stop() 方法被調(diào)用之后,線程就處于死亡狀態(tài)。新建狀態(tài)就緒狀態(tài)阻塞狀態(tài)運(yùn)行狀態(tài)死亡狀態(tài)8713.1.4 線程的調(diào)度和優(yōu)先級Java 中的線程優(yōu)先級是在 Thr
55、ead 類中定義的常量NORM_PRIORITY : 值為 5MAX_PRIORITY : 值為 10MIN_PRIORITY : 值為 1缺省優(yōu)先級為 NORM_PRIORITY有關(guān)優(yōu)先級的方法有兩個:final void setPriority(int newp) : 修改線程的當(dāng)前優(yōu)先級final int getPriority() : 返回線程的優(yōu)先級8813.2.1 多線程的實現(xiàn)方法通過以下兩種方法創(chuàng)建 Thread 對象:1.聲明一個 Thread 類的子類,并覆蓋 run() 方法。 class mythread extends Thread public void run( )
56、 /* 覆蓋該方法*/ 2.聲明一個實現(xiàn) Runnable 接口的類,并實現(xiàn) run() 方法。 class mythread implements Runnable public void run( ) /* 實現(xiàn)該方法*/ 8913.2.2 多線程的控制1.終止線程 stop()方法。2.測試線程狀態(tài) isAlive()方法。3.線程的暫停和恢復(fù) sleep() suspend()和resume() join()9013.3.1 多線程的互斥有時兩個或多個線程可能會試圖同時訪問一個資源 例如,一個線程可能嘗試從一個文件中讀取數(shù)據(jù),而另一個線程則嘗試在同一文件中修改數(shù)據(jù)在此情況下,數(shù)據(jù)可能會
57、變得不一致為了確保在任何時間點一個共享的資源只被一個線程使用,使用了“互斥”兩種方式實現(xiàn)互斥:使用互斥方法synchronized void methodA() 使用互斥塊synchronized(object) /要互斥的語句9113.3.2 多線程的同步 為避免輪流檢測,Java提供了一個線程間通信機(jī)制,使用wait()、notify()和notifyAll()方法 。這些方法僅在 synchronized 方法中才能被調(diào)用。wait()方法告知被調(diào)用的線程退出監(jiān)視器并進(jìn)入等待狀態(tài),直到其他線程進(jìn)入相同的監(jiān)視器并調(diào)用 notify( ) 方法。 notify( ) 方法通知同一對象上第一個
58、調(diào)用 wait( )線程。 notifyAll() 方法通知調(diào)用 wait() 的所有線程,具有最高優(yōu)先級的線程將先運(yùn)行。9213.3.3 線程的死鎖 當(dāng)兩個線程循環(huán)依賴于一對同步對象時將發(fā)生死鎖。例如: 一個線程進(jìn)入對象ObjA上的監(jiān)視器,而另一個線程進(jìn)入對象ObjB上的監(jiān)視器。如果ObjA中的線程試圖調(diào)用ObjB上的任何 synchronized 方法,就將發(fā)生死鎖。死鎖很少發(fā)生,但一旦發(fā)生就很難調(diào)試93總結(jié)1、掌握線程的基本概念2、掌握線程的狀態(tài)和生命周期 。3、可通過兩種方式創(chuàng)建線程:繼承Thread類、實現(xiàn)Runnable 接口。4、線程的互斥。5、線程的同步。第14章Java網(wǎng)絡(luò)編
59、程95目標(biāo):了解使用URL讀取和顯示網(wǎng)絡(luò)資源。掌握InetAddress類和套接字的概念。掌握使用TCP協(xié)議進(jìn)行通信的方法。掌握使用UDP協(xié)議進(jìn)行通信的方法。9614.1 使用URL包中提供了URL類。常用的構(gòu)造方法有:URL(String spec)URL(String protocol,String host,String file) URL(String protocol,String host,int port,String file)常用方法:public String getProtocol() public String getPort()public String getHos
60、t() public String getFile() 9714.2 讀取URL中的資源當(dāng)?shù)玫揭粋€URL對象之后,可以使用此對象調(diào)用openStream()方法,讀取指定的WWW資源,此方法與指定的資源建立連接后,返回一個InputStream對象。通過此對象從連接中讀取信息。 9814.3 顯示URL資源中的HTML文件javax.swing包中的JEditorPane容器可以解釋執(zhí)行HTML文件。構(gòu)造方法:JEditorPane()JEditorPane(URL initpage)JEditorPane(String url)常用方法:setPage(URL page)9914.4 處理超
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 戶外探索課程設(shè)計意圖
- 邁達(dá)斯懸臂法課程設(shè)計
- 運(yùn)籌學(xué)課課程設(shè)計搭配
- 轉(zhuǎn)向臂課程設(shè)計夾具CATIA圖紙
- 機(jī)械修理工操作規(guī)程(3篇)
- 船舶和海洋工程課程設(shè)計
- 2025版股權(quán)投資與退出機(jī)制協(xié)議書3篇
- 自動裝箱機(jī)課程設(shè)計
- 2025年度線下書店連鎖加盟合同協(xié)議3篇
- 2025年度濟(jì)南城市更新項目合作協(xié)議3篇
- 2024河南鄭州市金水區(qū)事業(yè)單位招聘45人歷年高頻難、易錯點500題模擬試題附帶答案詳解
- 食物損失和浪費(fèi)控制程序
- TCI 373-2024 中老年人免散瞳眼底疾病篩查規(guī)范
- 2024四川太陽能輻射量數(shù)據(jù)
- 石油鉆采專用設(shè)備制造考核試卷
- 法人變更股權(quán)轉(zhuǎn)讓協(xié)議書(2024版)
- 研究生中期考核匯報模板幻燈片
- 培訓(xùn)機(jī)構(gòu)與學(xué)校合作協(xié)議書范本
- 留置導(dǎo)尿法操作評分標(biāo)準(zhǔn)
- 2024年高考數(shù)學(xué)經(jīng)典解答題-立體幾何專項復(fù)習(xí)17題(附答案)
- 麻醉管理-血?dú)夥治鲈谑中g(shù)中的應(yīng)用
評論
0/150
提交評論