圖形用戶(hù)界面與事件處理.ppt
《圖形用戶(hù)界面與事件處理.ppt》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《圖形用戶(hù)界面與事件處理.ppt(139頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1 第13章圖形用戶(hù)界面與事件處理 Java的GUI類(lèi)簡(jiǎn)介Java事件處理布局管理器Swing組件的使用 2 13 1Java的GUI類(lèi)簡(jiǎn)介 Java有兩組GUI類(lèi) AWT AbstractWindowingToolkit 類(lèi)及改進(jìn)的Swing類(lèi) AWT類(lèi)是原始的JavaGUI類(lèi) 在java awt包中 Swing類(lèi)對(duì)AWT類(lèi)進(jìn)行了擴(kuò)充 在javax swing包中 3 13 1Java的GUI類(lèi)簡(jiǎn)介 Swing類(lèi)的名稱(chēng)與AWT類(lèi)的名稱(chēng)類(lèi)似 但其名稱(chēng)由字母J開(kāi)頭 GUI的類(lèi)層次 4 13 1Java的GUI類(lèi)簡(jiǎn)介 帶有GUI組件的框架 5 13 1Java的GUI類(lèi)簡(jiǎn)介 常用的GUI組件 1 6 13 1Java的GUI類(lèi)簡(jiǎn)介 常用的GUI組件 2 7 13 1Java的GUI類(lèi)簡(jiǎn)介 AWT類(lèi)簡(jiǎn)介要?jiǎng)?chuàng)建GUI窗口 就需要編寫(xiě)一個(gè)繼承自Frame的子類(lèi) 并進(jìn)行實(shí)例化 然后調(diào)用父類(lèi)方法setVisible使其可見(jiàn) 如果想在GUI窗口中增加一個(gè)按鈕 則可實(shí)例化Button類(lèi) 然后調(diào)用Frame子類(lèi)實(shí)例的add方法添加到窗口中 8 13 1Java的GUI類(lèi)簡(jiǎn)介 AWT類(lèi)簡(jiǎn)介定義AWTFrameWithButton類(lèi) 9 13 1Java的GUI類(lèi)簡(jiǎn)介 AWT類(lèi)簡(jiǎn)介此框架存在兩個(gè)問(wèn)題 首先 按鈕填充了整個(gè)空間 外觀有些奇怪 其次 此框架無(wú)法檢測(cè)到按鈕 單擊按鈕時(shí) 沒(méi)有任何反應(yīng) 10 13 1Java的GUI類(lèi)簡(jiǎn)介 Swing類(lèi)簡(jiǎn)介對(duì)前面的AWTFrameWithButton類(lèi)進(jìn)行修改 引入javax swing包 而不是引入java awt包 擴(kuò)充Jframe類(lèi) 而不是擴(kuò)充Frame類(lèi) 按鈕名稱(chēng)以字母J開(kāi)頭 將語(yǔ)句this add closeButton 改為this getContentPane add closeButton 11 13 1Java的GUI類(lèi)簡(jiǎn)介 Swing類(lèi)簡(jiǎn)介SwingFrameWithButton類(lèi)的定義 12 13 1Java的GUI類(lèi)簡(jiǎn)介 Swing類(lèi)簡(jiǎn)介Swing的組件和容器層次頂層容器 JFrame JDialog JApplet 其他組件都必須放在頂層容器上才能顯現(xiàn)出來(lái) 中間層容器 作用是容納其他組件 分為一般用途和特殊用途兩類(lèi) 一般用途的有JPanel JScrollPane JSplitPane JTabbedPane JToolBar五類(lèi) 特殊用途的有JInternalFrame JRootPane兩類(lèi) 13 13 1Java的GUI類(lèi)簡(jiǎn)介 Swing類(lèi)簡(jiǎn)介Swing的組件和容器層次原子組件 是在圖形用戶(hù)界面中和用戶(hù)進(jìn)行交互的組件 根據(jù)功能不同 可將其分為三類(lèi) 不可編輯信息的組件 JLabel JProgressBar JToolTip 輸入信息的組件 JButton JCheckBox JRadioButton JComboBox JTextField JList JMenu JSlider JSpinner JTexComponent等 提供格式化信息并允許用戶(hù)選擇的組件 JColorChooser JFileChooser JTable及JTree組件 14 13 1Java的GUI類(lèi)簡(jiǎn)介 三層容器舉例 15 13 1Java的GUI類(lèi)簡(jiǎn)介 三層容器舉例 16 13 2事件處理 基本概念 事件用戶(hù)與系統(tǒng)交互而產(chǎn)生的鍵盤(pán)或鼠標(biāo)動(dòng)作稱(chēng)為事件 事件除了可以由用戶(hù)單擊鼠標(biāo)等操作生成外 也可以由程序代碼或系統(tǒng)生成 不同事件的類(lèi)型由不同的類(lèi)表示 在java awt event包中定義了很多事件類(lèi) 例如 ActionEvent ItemEvent MouseEvent KeyEvent等 17 13 2事件處理 基本概念 事件源產(chǎn)生事件的組件稱(chēng)為事件源 例如 單擊按鈕產(chǎn)生的事件由ActionEvent類(lèi)表示 稱(chēng)為ActionEvent事件 按鈕就是事件源 18 13 2事件處理 基本概念 事件監(jiān)聽(tīng)器事件監(jiān)聽(tīng)器也稱(chēng)為事件監(jiān)聽(tīng)者 是當(dāng)一個(gè)事件發(fā)生時(shí)被通知的對(duì)象 它負(fù)責(zé)接收對(duì)象 并進(jìn)行處理 Java中的每種事件類(lèi)都有一個(gè)對(duì)應(yīng)的接口 稱(chēng)為事件監(jiān)聽(tīng)器接口 接口中聲明了一個(gè)或多個(gè)抽象的事件處理方法 凡是需要接收并處理事件對(duì)象的類(lèi) 都需要實(shí)現(xiàn)相應(yīng)的接口 19 13 2事件處理 基本概念 20 13 2事件處理 委托事件處理機(jī)制對(duì)于每一種要處理的事件 都要定義監(jiān)聽(tīng)類(lèi) 監(jiān)聽(tīng)器 這個(gè)監(jiān)聽(tīng)類(lèi)應(yīng)實(shí)現(xiàn)相應(yīng)的監(jiān)聽(tīng)器接口 事件源必須注冊(cè)事件監(jiān)聽(tīng)器 以便監(jiān)聽(tīng)器可以接收特定事件的通知 事件源發(fā)生的事件對(duì)象只被傳遞給已經(jīng)注冊(cè)的事件監(jiān)聽(tīng)器 21 13 2事件處理 委托事件處理機(jī)制注冊(cè)監(jiān)聽(tīng)器 RegisteringListeners 的方法如下 addActionListener ActionListeneryourListener addMouseListener MouseListeneryourListener addWindowListener WindowListeneryourListener 22 13 2事件處理 委托事件處理機(jī)制例如 要響應(yīng)Jbutton的單擊事件 則需要對(duì)此類(lèi)型的事件進(jìn)行注冊(cè) 需要調(diào)用Jbutton的addActionListener 方法 此方法需要一個(gè)參數(shù) 這個(gè)參數(shù)是實(shí)現(xiàn)了ActionListener接口的類(lèi)對(duì)象 ActionListener接口只包含一個(gè)方法 即actionPerformed方法 23 13 2事件處理 委托事件處理機(jī)制定義一個(gè)類(lèi) 如ButtonHandler類(lèi) 實(shí)現(xiàn)ActionListener接口 并在類(lèi)中實(shí)現(xiàn)接口中定義的actionPerformed方法 24 13 2事件處理 委托事件處理機(jī)制使用addActionListener 方法將ButtonHandler類(lèi)的對(duì)象注冊(cè)到按鈕上 25 13 2事件處理 委托事件處理機(jī)制 26 13 2事件處理 實(shí)現(xiàn)監(jiān)聽(tīng)器接口的方法一般可以通過(guò)以下三種方法實(shí)現(xiàn)監(jiān)聽(tīng)器接口 在已有的類(lèi)中實(shí)現(xiàn)接口 單獨(dú)定義一個(gè)類(lèi)實(shí)現(xiàn)接口 創(chuàng)建內(nèi)部類(lèi)實(shí)現(xiàn)接口 27 13 2事件處理 實(shí)現(xiàn)監(jiān)聽(tīng)器接口的方法在已有的類(lèi)中實(shí)現(xiàn)接口 28 13 2事件處理 實(shí)現(xiàn)監(jiān)聽(tīng)器接口的方法在已有的類(lèi)中實(shí)現(xiàn)接口 29 13 2事件處理 實(shí)現(xiàn)監(jiān)聽(tīng)器接口的方法單獨(dú)定義一個(gè)類(lèi)實(shí)現(xiàn)接口 30 13 2事件處理 實(shí)現(xiàn)監(jiān)聽(tīng)器接口的方法單獨(dú)定義一個(gè)類(lèi)實(shí)現(xiàn)接口 31 13 2事件處理 實(shí)現(xiàn)監(jiān)聽(tīng)器接口的方法創(chuàng)建內(nèi)部類(lèi)實(shí)現(xiàn)接口 32 13 2事件處理 處理鼠標(biāo)事件舉例編寫(xiě)程序檢測(cè)鼠標(biāo)的拖動(dòng) 即按住鼠標(biāo)鍵并同時(shí)移動(dòng)鼠標(biāo)的操作 以及鼠標(biāo)進(jìn)入和離開(kāi)窗口的情況 處理過(guò)程 因拖動(dòng)鼠標(biāo)而引發(fā)的MouseEvent事件對(duì)象可以由實(shí)現(xiàn)了MouseMotionListener接口的類(lèi)處理 MouseMotionListener接口中聲明了mouseDragged 和mouseMoved 兩個(gè)抽象方法 分別用于處理鼠標(biāo)的拖動(dòng)和移動(dòng) 33 13 2事件處理 處理鼠標(biāo)事件舉例為了處理其他鼠標(biāo)事件 必須實(shí)現(xiàn)MouseListener接口 該接口聲明了mouseEntered mouseExited mousePressed mouseReleased 和mouseClicked 五個(gè)抽象方法 34 13 2事件處理 處理鼠標(biāo)事件舉例 35 13 2事件處理 處理鼠標(biāo)事件舉例 36 13 2事件處理 處理鼠標(biāo)事件舉例 37 13 2事件處理 處理鼠標(biāo)事件舉例 38 13 2事件處理 處理鼠標(biāo)事件舉例 39 13 2事件處理 處理鼠標(biāo)事件舉例 40 13 2事件處理 擴(kuò)充適配器類(lèi)如果一個(gè)類(lèi)實(shí)現(xiàn)一個(gè)接口 就需要實(shí)現(xiàn)接口中的所有方法 為了方便 Java為那些聲明了多個(gè)方法的Listener接口提供了一個(gè)對(duì)應(yīng)的適配器 Adapter 類(lèi) 例如 MouseListener對(duì)應(yīng)的適配器類(lèi)為MouseAdapter 在適配器類(lèi)中實(shí)現(xiàn)了相應(yīng)接口中的全部方法 只是方法的內(nèi)容為空 41 13 2事件處理 擴(kuò)充適配器類(lèi)這樣 在創(chuàng)建新類(lèi)時(shí) 可以不實(shí)現(xiàn)接口 而是只繼承某個(gè)適當(dāng)?shù)倪m配器類(lèi) 并且覆蓋所關(guān)心的事件處理方法 42 13 2事件處理 使用多個(gè)GUI組件在使用多個(gè)組件時(shí) 使用事件實(shí)例的getSource 方法確定發(fā)生的事件來(lái)自哪個(gè)組件 例 編寫(xiě)具有3個(gè)按鈕的窗口 點(diǎn)擊第一個(gè)按鈕在文本框中顯示 HelloWorld 點(diǎn)擊第二個(gè)按鈕清除文本框中的內(nèi)容 點(diǎn)擊第三個(gè)按鈕則關(guān)閉窗口 43 13 2事件處理 使用多個(gè)GUI組件 44 13 2事件處理 使用多個(gè)GUI組件 45 13 2事件處理 使用多個(gè)GUI組件 46 13 2事件處理 使用多個(gè)GUI組件 47 13 2事件處理 使用多個(gè)GUI組件 48 13 2事件處理 使用多個(gè)GUI組件 49 13 3布局管理器 為了使生成的圖形用戶(hù)界面具有良好的平臺(tái)無(wú)關(guān)性 Java語(yǔ)言提供了布局管理器來(lái)管理組件在容器中的布局 而不使用直接設(shè)置組件的位置和大小的方式 本節(jié)介紹常用的布局管理器FlowLayout BorderLayout GridLayout GridBagLayout及CardLayout的使用 50 13 3布局管理器 FlowLayoutFlowLayout布局方式是將組件一排一排地依次放置 當(dāng)容器被重新設(shè)置大小后 則布局也會(huì)隨之發(fā)生改變 各組件的大小不變 但相對(duì)位置會(huì)發(fā)生變化 51 13 3布局管理器 FlowLayoutFlowLayout類(lèi)有三種構(gòu)造方法 publicFlowLayout publicFlowLayout intalign publicFlowLayout intalign inthGap intvGap 52 13 3布局管理器 FlowLayout應(yīng)用舉例 53 13 3布局管理器 FlowLayout應(yīng)用舉例 54 13 3布局管理器 FlowLayout應(yīng)用舉例 55 13 3布局管理器 BorderLayoutBorderLayout提供了更復(fù)雜的布局控制方法 它包括5個(gè)區(qū)域 North South East West和Center 當(dāng)容器的尺寸發(fā)生變化時(shí) 各組件的相對(duì)位置不變 但中間部分組件的尺寸會(huì)發(fā)生變化 南北組件的高度不變 東西組件的寬度不變 56 13 3布局管理器 BorderLayoutBorderLayout類(lèi)有以下兩個(gè)造方法 publicBorderLayout publicBorderLayout inthgap intvgap 57 13 3布局管理器 BorderLayout如果容器使用了BorderLayout布局方式 則用add 方法往容器中添加組件時(shí)必須指明添加的位置 例如 add BorderLayout SOUTH newJButton West add BorderLayout NORTH newJButton North 58 13 3布局管理器 BorderLayout舉例 59 13 3布局管理器 GridLayoutGridLayout布局方式可以使容器中的各組件呈網(wǎng)格狀分布 將容器劃分為很多行 row 和列 column 初始行和列都從0開(kāi)始 容器中各組件的高度和寬度相同 當(dāng)容器的尺寸發(fā)生變化時(shí) 各組件的相對(duì)位置不變 但各自的尺寸會(huì)發(fā)生變化 60 13 3布局管理器 GridLayoutGridLayout類(lèi)的構(gòu)造方法有 publicGridLayout introws intcolumns publicGridLayout introws intcolumns inthGap intvGap 61 13 3布局管理器 GridLayout舉例 62 13 3布局管理器 GridLayout舉例 63 13 3布局管理器 GridBagLayoutGridBagLayout將組件放置在網(wǎng)格中 這一點(diǎn)類(lèi)似于GridLayout 所不同的是 GridBagLayout不僅能設(shè)置組件擺放的位置 還能設(shè)置該組件占多少行 多少列 并可以按任意順序放置 是一種非常靈活的布局管理器 64 13 3布局管理器 GridBagLayoutGridBagConstrains對(duì)象描述組件在GridBagLayout中的放置方式 65 13 3布局管理器 GridBagLayout舉例 66 13 3布局管理器 GridBagLayout舉例 67 13 3布局管理器 GridBagLayout舉例 68 13 3布局管理器 GridBagLayout舉例 69 13 3布局管理器 GridBagLayout舉例 70 13 3布局管理器 GridBagLayout舉例 71 13 3布局管理器 CardLayoutCardLayout布局方式可以幫助用戶(hù)處理兩個(gè)或更多的組件共享同一顯示空間 共享空間的組件之間的關(guān)系就像一摞牌一樣 它們摞在一起 只有最上面的組件是可見(jiàn)的 72 13 3布局管理器 CardLayoutCardLayout類(lèi)有兩種構(gòu)造方法 publicCardLayout 組件距容器左右邊界和上下邊界的距離為缺省值0個(gè)象素 publicCardLayout inthorizontalGap intverticalGap 組件距容器左右邊界和上下邊界的距離為指定值 73 13 3布局管理器 CardLayoutCardLayout可以象換牌一樣處理這些共享空間的組件 publicvoidshow Containerparent Stringname publicvoidnext Containerparent publicvoidprevious Containerparent publicvoidfirst Containerparent publicvoidlast Containerparent 74 13 3布局管理器 CardLayout舉例 75 13 3布局管理器 CardLayout舉例 76 13 3布局管理器 CardLayout舉例 77 13 3布局管理器 CardLayout舉例 78 13 3布局管理器 CardLayout舉例 79 13 3布局管理器 CardLayout舉例 80 13 4Swing組件的使用 SwingConstant接口SwingConstant接口中定義了很多常量用來(lái)表示位置 朝向信息 這些常量都是staticint型的 Swing組件通過(guò)實(shí)現(xiàn)這個(gè)接口就可以使用它們來(lái)確定位置了 81 13 4Swing組件的使用 SwingConstant接口 82 13 4Swing組件的使用 標(biāo)簽類(lèi) JLabelJLabel類(lèi)提供的常用構(gòu)造方法 JLabel 創(chuàng)建空標(biāo)簽JLabel Stringtext 創(chuàng)建帶有文本的標(biāo)簽JLabel StringtextinthorizontalAlignment 創(chuàng)建帶有文本的標(biāo)簽 并指定其水平排列方式JLabel Iconimage 創(chuàng)建帶有圖標(biāo)的標(biāo)簽JLabel Iconimage inthorizontalAlignment 創(chuàng)建帶有圖標(biāo)的標(biāo)簽 并指定其水平排列方式 83 13 4Swing組件的使用 菜單Swing下拉菜單至少由3個(gè)類(lèi)的實(shí)例組成 JMenuBar 菜單欄 JMenu 菜單 JMenuItem 菜單項(xiàng) 84 13 4Swing組件的使用 菜單菜單欄 菜單及菜單項(xiàng)的示例 85 13 4Swing組件的使用 菜單將前面的SwingFrameAndComponent類(lèi)改寫(xiě)為SwingFrameWithMenus類(lèi) 用下拉菜單替代按鈕來(lái)顯示和清除消息及關(guān)閉窗體 86 13 4Swing組件的使用 菜單舉例 SwingFrameWithMenus類(lèi)定義 87 13 4Swing組件的使用 菜單舉例 SwingFrameWithMenus類(lèi)定義 88 13 4Swing組件的使用 菜單舉例 SwingFrameWithMenus類(lèi)定義 89 13 4Swing組件的使用 菜單舉例 SwingFrameWithMenus類(lèi)定義 90 13 4Swing組件的使用 工具欄 JToolBar 91 13 4Swing組件的使用 按鈕類(lèi)按鈕類(lèi)的繼承層次AbstractButton抽象類(lèi)是眾多按鈕類(lèi)的基類(lèi) 子類(lèi)有JButton JToggleButton JMenuItem JToggleButton表示有兩個(gè)選擇狀態(tài)的按鈕 它有兩個(gè)子類(lèi)JCheckBox JRadioButton 分別用來(lái)實(shí)現(xiàn)多選按鈕和單選按鈕 JMenuItem有三個(gè)子類(lèi)JCheckBoxMenuItem JRadioButtonMenuItem JMenu 用來(lái)在菜單中加入多選按鈕 單選按鈕和一般的菜單項(xiàng) 92 13 4Swing組件的使用 按鈕類(lèi) AbstractButton 93 13 4Swing組件的使用 按鈕類(lèi) AbstractButton 94 13 4Swing組件的使用 按鈕類(lèi) JCheckBox JRadioButtonJCheckBox JRadioButton是兩種狀態(tài)按鈕 可為用戶(hù)提供是 否或真 假選擇 用戶(hù)可以從成組使用的復(fù)選框中選擇一項(xiàng)或多項(xiàng) 但在成組使用的單選按鈕中一次只能選擇一個(gè)單選按鈕 95 13 4Swing組件的使用 按鈕類(lèi) JCheckBox JRadioButton創(chuàng)建按鈕 JCheckBox及JRadioButton的常用構(gòu)造方法JCheckBox Stringtext booleanselected JRadioButton Stringtext booleanselected 96 13 4Swing組件的使用 按鈕類(lèi) JCheckBox JRadioButton使用ButtonGroup對(duì)按鈕分組ButtonGroup的典型用途是包含單選按鈕的邏輯組 通過(guò)使用ButtonGroup的add方法 可將按鈕添加到組中 97 13 4Swing組件的使用 按鈕類(lèi) JCheckBox JRadioButton常用事件在單擊組件時(shí)發(fā)生動(dòng)作事件 當(dāng)選項(xiàng)發(fā)生改變時(shí)發(fā)生選項(xiàng)事件 處理選項(xiàng)事件的類(lèi)必須實(shí)現(xiàn)ItemListener接口 ItemListener接口中只有一個(gè)方法 VoiditemStateChanged ItemEvente 98 13 4Swing組件的使用 單選按鈕使用舉例 99 13 4Swing組件的使用 單選按鈕使用舉例 100 13 4Swing組件的使用 單選按鈕使用舉例 101 13 4Swing組件的使用 單選按鈕使用舉例 102 13 4Swing組件的使用 復(fù)選框使用舉例 103 13 4Swing組件的使用 復(fù)選框使用舉例 104 13 4Swing組件的使用 復(fù)選框使用舉例 105 13 4Swing組件的使用 復(fù)選框使用舉例 106 13 4Swing組件的使用 組合框 下拉列表框組合框JComboBox與JRadioButton類(lèi)一樣 只允許用戶(hù)在一組可能的選項(xiàng)中選擇一項(xiàng) 組合框有兩種不同的格式 默認(rèn)狀態(tài)是不可編輯的模式 包括一個(gè)按鈕和一個(gè)下拉列表 另一種是可編輯的模式 多了一個(gè)文本區(qū)域 用戶(hù)可以在此文本區(qū)域內(nèi)填入列表中不包括的內(nèi)容 107 13 4Swing組件的使用 組合框 下拉列表框創(chuàng)建一個(gè)JComboBox對(duì)象 String comboBoxItem Java C C VB Lisp Prolog JComboBoxcomboBox newJComboBox comboBoxItem 108 13 4Swing組件的使用 組合框 下拉列表框每次點(diǎn)擊JComboBox對(duì)象 選中不同于當(dāng)前選中項(xiàng)時(shí) 就會(huì)產(chǎn)生項(xiàng)事件 當(dāng)新選擇的項(xiàng)與已選擇的項(xiàng)相同時(shí) 不會(huì)產(chǎn)生項(xiàng)事件 109 13 4Swing組件的使用 組合框 下拉列表框通過(guò)調(diào)用JComboBox的getSelectedItem方法來(lái)獲得當(dāng)前選中項(xiàng) 方法的返回類(lèi)型是Object 必須將它轉(zhuǎn)換為正確的類(lèi)型 110 13 4Swing組件的使用 組合框 下拉列表框例如 項(xiàng)是String對(duì)象 則使用下面的語(yǔ)句 textField setText comboBox getSelectedItem toString 也可以調(diào)用getSelectedIndex方法來(lái)獲得已選中項(xiàng)的位置 列表中第一項(xiàng)的位置是0 111 13 4Swing組件的使用 組合框 下拉列表框舉例 112 13 4Swing組件的使用 組合框 下拉列表框舉例 113 13 4Swing組件的使用 組合框 下拉列表框舉例 114 13 4Swing組件的使用 文本Swing提供六種文本組件 還有一系列支持的類(lèi)和接口 115 13 4Swing組件的使用 文本文本組件可分為三類(lèi) 單行文本 包括JTextField JPasswordField JFormattedTextField 多行單一風(fēng)格文本 JTextArea 它可以顯示和編輯多行文本 通常用來(lái)讓用戶(hù)輸入任意長(zhǎng)度的無(wú)格式文本或顯示無(wú)格式的幫助信息 多行風(fēng)格化文本 包括JEditorPane JTextPane 可以顯示和編輯多行多種式樣的文本 甚至可以嵌入圖像或其他組件 116 13 4Swing組件的使用 文本框JTextFieldJTextField的構(gòu)造方法如下 JTextField 創(chuàng)建空的文本框 JTextField Stringtext 創(chuàng)建具有指定文本的文本框 JTextField intcolumns 創(chuàng)建具有指定列的文本框 JTextField Stringtext intcolumns 創(chuàng)建具有指定文本 指定列的文本框 117 13 4Swing組件的使用 文本框JTextFieldJTextField的常用方法 StringgetText 獲取文本框中的當(dāng)前文本 voidsetTextField Stringt 設(shè)置文本框中的當(dāng)前文本 intgetLength 返回當(dāng)前文本中的字符個(gè)數(shù) StringgetText intoffs intlen 返回給定字段所包含的文本 voidselectAll 選擇文本框中所有文本 118 13 4Swing組件的使用 文本框JTextFieldJTextField的常用方法 intgetSelectionStart 獲取文本框中選定的文本起始點(diǎn) voidsetSelectionStart intselectionStart 設(shè)置文本框中選定的文本起始點(diǎn) intgetSelectionEnd 獲取文本框中選定文本結(jié)束位置的下一個(gè)位置 voidsetSelectionEnd intselectionEnd 設(shè)置文本框中選定文本結(jié)束位置的下一個(gè)位置 119 13 4Swing組件的使用 文本框JTextFieldJTextField的常用方法 voidselect intselectionStart intselectionEnd 選擇文本框中的一部分文本 selectionStart指定被選擇文本的開(kāi)始位置 selectionEnd指定被選擇文本結(jié)束位置的下一個(gè)位置 voidsetEditable booleanb 設(shè)置是否能夠編輯文本框中的內(nèi)容 參數(shù)b的值為true表示能夠編輯 否則不能編輯 120 13 4Swing組件的使用 密碼框JPasswordField密碼框JPasswordField繼承自JTextField 是一種特殊的文本框 常用方法 char getPassword 返回包含在密碼框內(nèi)的文本 voidsetEchoChar charc 設(shè)置密碼框的回顯字符 參數(shù)c是用于屏蔽密碼框內(nèi)容的密碼字符 缺省情況下為星號(hào) 例如 如果希望在密碼框中顯示點(diǎn)號(hào) 則調(diào)用setEchoChar 方法 121 13 4Swing組件的使用 二維表Java使用JTable類(lèi)對(duì)象顯示和編輯二維表 JTable并不存儲(chǔ)數(shù)據(jù) 只是給出數(shù)據(jù)的視圖 帶有滾動(dòng)框的典型表 122 13 4Swing組件的使用 二維表有兩種方式來(lái)創(chuàng)建JTable類(lèi)對(duì)象 一種方式是直接使用JTable類(lèi)的構(gòu)造方法 另一種方式是定義自己的TableMode類(lèi)作為AbstractTableMode類(lèi)的子類(lèi) 123 13 4Swing組件的使用 二維表使用JTable類(lèi)的構(gòu)造方法創(chuàng)建二維表的步驟 1 在String數(shù)組或Vector中聲明列名StringcolumnName 書(shū)號(hào) 書(shū)名 作者 價(jià)格 或VectorcolumnName 書(shū)號(hào) 書(shū)名 作者 價(jià)格 124 13 4Swing組件的使用 二維表使用JTable類(lèi)的構(gòu)造方法創(chuàng)建二維表的步驟 2 在二維Object數(shù)組或Vector中初始化并存儲(chǔ)數(shù)據(jù)Object data 9787807310907 001 笑傲江湖 金庸 36 0 9787807310907 002 笑傲江湖 金庸 36 0 7101003044 001 史記 司馬遷 50 0 9787508619439 001 誰(shuí)動(dòng)了我的奶酪 斯賓塞 約翰遜 27 0 7020024750 001 圍城 錢(qián)鐘書(shū) 38 0 9787544253956 001 富爸爸窮爸爸 羅伯特 T 清崎 26 0 125 13 4Swing組件的使用 二維表使用JTable類(lèi)的構(gòu)造方法創(chuàng)建二維表的步驟 3 用數(shù)據(jù)和列名生成JTable類(lèi)對(duì)象 有兩個(gè)JTable方法可以直接接收數(shù)據(jù) JTable Object rowData Object columnNames JTable VectorrowData VectorcolumnNames 126 13 4Swing組件的使用 二維表使用JTable類(lèi)的構(gòu)造方法創(chuàng)建二維表的步驟 4 將表放在滾動(dòng)框中 JScrollPane類(lèi)的構(gòu)造方法帶有一個(gè)參數(shù) 此參數(shù)指向數(shù)據(jù)表對(duì)象 構(gòu)造方法將創(chuàng)建一個(gè)滾動(dòng)框作為此數(shù)據(jù)表的容器 并將數(shù)據(jù)表自動(dòng)加到此容器上 創(chuàng)建滾動(dòng)框并作為表容器的典型代碼 JScrollPanescrollPane newJScrollPane table 127 13 4Swing組件的使用 二維表舉例 128 13 4Swing組件的使用 二維表舉例 129 13 4Swing組件的使用 二維表在數(shù)據(jù)項(xiàng)上單擊鼠標(biāo)就可選中一行 按住Shift鍵并單擊鼠標(biāo) 或者在行上拖動(dòng)鼠標(biāo)就可選中連續(xù)的多行 按住Ctrl鍵并單擊鼠標(biāo)就可選中不連續(xù)的多行 在數(shù)據(jù)項(xiàng)上雙擊鼠標(biāo)就可以對(duì)數(shù)據(jù)項(xiàng)進(jìn)行修改了 130 13 4Swing組件的使用 二維表可以調(diào)用JTable setSelectionMode方法來(lái)設(shè)置選擇模式 此方法只有一個(gè)參數(shù) 此參數(shù)的值只能是javax swing ListSelectionModel中所定義的以下三個(gè)常量之一 MULTIPLE INTERVAL SELECTIONSINGLE INTERVAL SELECTIONSINGLE SELECTION 131 13 4Swing組件的使用 二維表如只允許選擇單行 則可使用下面的代碼進(jìn)行設(shè)置 table setSelectionMode ListSelectionModel SINGLE SELECTION 132 13 4Swing組件的使用 二維表缺省的情況下單擊鼠標(biāo)時(shí)選擇行 設(shè)置單擊鼠標(biāo)時(shí)選擇列 table setColumnSelectionAllowed true table setRowSelectionAllowed false 設(shè)置單擊鼠標(biāo)時(shí)選擇數(shù)據(jù)項(xiàng) 單元 table setCellSelectionEnabled true 133 13 4Swing組件的使用 二維表使用構(gòu)造方法來(lái)構(gòu)造數(shù)據(jù)表的優(yōu)點(diǎn)是易于使用 但也存在以下方面的缺點(diǎn) 數(shù)據(jù)表的每個(gè)單元自動(dòng)為可編輯 對(duì)所有的數(shù)據(jù)類(lèi)型都作為字符串對(duì)待 要求將表中的所有數(shù)據(jù)放在數(shù)組或向量中 這對(duì)于某些數(shù)據(jù)并不合適 134 13 4Swing組件的使用 二維表要突破上述限制 就需要定義AbstractTableModel類(lèi)的子類(lèi) 135 13 4Swing組件的使用 二維表 136 13 4Swing組件的使用 二維表有了MyTableMode類(lèi) 數(shù)據(jù)表的創(chuàng)建就變得很簡(jiǎn)單了 JTabletable newJTable newMyTableModel 137 13 4Swing組件的使用 二維表舉例 138 13 5本章小結(jié) 本章重點(diǎn)介紹了Swing的結(jié)構(gòu)層次 布局管理 以及如何為其編寫(xiě)事件處理程序 學(xué)習(xí)本章的重點(diǎn)在于掌握?qǐng)D形用戶(hù)界面程序的編程方法 思路 以及常用的GUI組件的使用方法 139 Thanks- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 圖形 用戶(hù)界面 事件 處理
鏈接地址:http://m.appdesigncorp.com/p-8754971.html