版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Java高級應(yīng)用開發(fā)錢能J021104723975921qiansiyuan@163.com教學(xué)目標(biāo)掌握窗體、菜單的設(shè)計(jì)掌握布局的應(yīng)用掌握基本組件的應(yīng)用掌握各種事件的處理掌握文件的讀寫教學(xué)內(nèi)容1.1日歷記事本項(xiàng)目介紹1.2窗體的設(shè)計(jì)1.3菜單的設(shè)計(jì)1.4布局的應(yīng)用1.5常用組件的使用1.6各種事件的處理1.7文件的讀寫1.8項(xiàng)目的打包學(xué)習(xí)重點(diǎn)首先應(yīng)熟練掌握GUI設(shè)計(jì)中各種組件的方法掌握窗體、菜單、布局和事件處理的步驟理解GUI圖形設(shè)計(jì)的思路與分析方法1.1日歷記事本項(xiàng)目介紹1.1.1軟件需求分析所謂“需求分析”,是指對要解決的問題進(jìn)行詳細(xì)的分析,弄清楚問題的要求,包括需要輸入什么數(shù)據(jù),要得到什么結(jié)果,最后應(yīng)輸出什么??梢哉f,在軟件工程當(dāng)中的“需求分析”就是確定要計(jì)算機(jī)“做什么”。軟件需求包括三個不同的層次:業(yè)務(wù)需求、用戶需求和功能需求(也包括非功能需求)。1.業(yè)務(wù)需求(businessrequirement)反映了組織機(jī)構(gòu)或客戶對系統(tǒng)、產(chǎn)品高層次的目標(biāo)要求,它們在項(xiàng)目視圖與范圍文檔中予以說明。2.用戶需求(userrequirement)文檔描述了用戶使用產(chǎn)品必須要完成的任務(wù),這在使用實(shí)例(usecase)文檔或方案腳本說明中予以說明。3.功能需求(functionalrequirement)定義了開發(fā)人員必須實(shí)現(xiàn)的軟件功能,使得用戶能完成他們的任務(wù),從而滿足了業(yè)務(wù)需求。需求分析需求分析的方法首先調(diào)查組織機(jī)構(gòu)情況,包括了解該組織的部門組成情況,各部門的職能等,為分析信息流程作準(zhǔn)備。然后調(diào)查各部門的業(yè)務(wù)活動情況,包括了解各個部門輸入和使用什么數(shù)據(jù),如何加工處理這些數(shù)據(jù),輸出什么信息,輸出到什么部門,輸出結(jié)果的格式是什么。協(xié)助用戶明確對新系統(tǒng)的各種要求,包括信息要求、處理要求、完全性與完整性要求。確定新系統(tǒng)的邊界,確定哪些功能由計(jì)算機(jī)完成或?qū)頊?zhǔn)備讓計(jì)算機(jī)完成,哪些活動由人工完成。由計(jì)算機(jī)完成的功能就是新系統(tǒng)應(yīng)該實(shí)現(xiàn)的功能。常用方法:跟班作業(yè)、開調(diào)查會、請專人介紹、詢問、設(shè)計(jì)調(diào)查表請用戶填寫、查閱記錄等日歷記事本的需求分析1、日歷展示功能:2、日志備注功能:1.1.2軟件概要設(shè)計(jì)概要設(shè)計(jì)的主要任務(wù)是把需求分析得到的DFD轉(zhuǎn)換為軟件結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)。設(shè)計(jì)軟件結(jié)構(gòu)的具體任務(wù)是:將一個復(fù)雜系統(tǒng)按功能進(jìn)行模塊劃分、建立模塊的層次結(jié)構(gòu)及調(diào)用關(guān)系、確定模塊間的接口及人機(jī)界面等。數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)包括數(shù)據(jù)特征的描述、確定數(shù)據(jù)的結(jié)構(gòu)特性、以及數(shù)據(jù)庫的設(shè)計(jì)。顯然,總體設(shè)計(jì)建立的是目標(biāo)系統(tǒng)的邏輯模型,與計(jì)算機(jī)無關(guān)。概要設(shè)計(jì)界面如何布局?如何通過類描述日期?1.1.3軟件詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)的任務(wù)是設(shè)計(jì)每個模塊的實(shí)現(xiàn)算法、所需的局部數(shù)據(jù)結(jié)構(gòu)。詳細(xì)設(shè)計(jì)的目標(biāo)有兩個:實(shí)現(xiàn)模塊功能的算法要邏輯上正確和算法描述要簡明易懂。主要任務(wù):1.為每個模塊確定采用的算法,選擇某種適當(dāng)?shù)墓ぞ弑磉_(dá)算法的過程,寫出模塊的詳細(xì)過程性描述;2.確定每一模塊使用的數(shù)據(jù)結(jié)構(gòu);3.確定模塊接口的細(xì)節(jié),包括對系統(tǒng)外部的接口和用戶界面,對系統(tǒng)內(nèi)部其它模塊的接口,以及模塊輸入數(shù)據(jù)、輸出數(shù)據(jù)及局部數(shù)據(jù)的全部細(xì)節(jié)。4.要為每一個模塊設(shè)計(jì)出一組測試用例,以便在編碼階段對模塊代碼(即程序)進(jìn)行預(yù)定的測試,模塊的測試用例是軟件測試計(jì)劃的重要組成部分,通常應(yīng)包括輸入數(shù)據(jù),期望輸出等內(nèi)容。實(shí)驗(yàn)1JAVA基礎(chǔ)復(fù)習(xí)類的封裝與繼承java.util.Calendar的介紹/DocWeb/api/all/java.util.Calendar定義一個日歷類MyCalendar用于展示某年某月的日歷分布。獲得當(dāng)前月的天數(shù)獲得當(dāng)前月的第一天是星期幾java.util.Calendar類獲取Calendar實(shí)例Calendardate=Calendar.getInstance();設(shè)置日期date.set(year,month-1,1);獲取當(dāng)前月第一天是星期幾intxq=date.get(Calendar.DAY_OF_WEEK)-1;展示某年某月的日歷分布2010.10日一二三四五六12345678910111213141516171819202122232425262728293031任務(wù)一:獲得當(dāng)前月的第一天是星期幾任務(wù)二:獲得當(dāng)前月的天數(shù)任務(wù)三:將日歷分布保存在數(shù)組中任務(wù)四:輸出數(shù)組中的內(nèi)容首先,如何描述日歷類MyCalendar年year月month日day日歷dayssetYear()getYear()setMonth()getMonth()setDay()getDay()initDays():創(chuàng)建并初始化setDays():完成任務(wù)1-3getDays():返回日歷任務(wù)一:獲得當(dāng)前月的第一天是星期幾創(chuàng)建日歷實(shí)例對象Calendardate=Calendar.getInstance();設(shè)置日歷的年和月(注意月份減一)date.set(year,month-1,1);獲取當(dāng)前月第一天是星期幾intxq=date.get(Calendar.DAY_OF_WEEK)-1;思考為什么設(shè)置月份要減1?為什么計(jì)算星期時也要減1?任務(wù)二:獲得當(dāng)前月的天數(shù)如果是1、3、5、7、8、10、12月,則天數(shù)為31天;如果是4、6、9、11月,則天數(shù)為30天;如果是2月,且閏年,天數(shù)為29天,不閏年,天數(shù)為28天。任務(wù)三:將日歷分布保存在數(shù)組中for(inti=xq,n=1;i<xq+day;i++){ days[i]=String.valueOf(n); n++;//用n來表示日歷顯示的內(nèi)容
}任務(wù)四:輸出數(shù)組中的內(nèi)容輸出2010年10月的日歷分布日一二三四五六123456789101112131415161718192021222324252627282930311.2窗體的設(shè)計(jì)窗體框架頂層容器組件由javax.swing包中的JFrame類或者java.awt包中的Frame類提供。因此在定義窗體類時,必須首先引用javax.swing包中的JFrame類或者java.awt包中的Frame類。1.2.1AWT與SWING圖形用戶界面(GUI,GraphicalUserInterface)是為應(yīng)用程序提供一個圖形化的界面,程序通過GUI與用戶交互,GUI能使一個應(yīng)用程序具有與眾不同的“外觀”與“感覺”。JAVA中提供GUI組件的包有AWT和SWINGAWT:依賴平臺,不同平臺上外觀和風(fēng)格不同,不易做出美觀的界面(java.awt.*)SWING:不依賴平臺,不同平臺上具有相同的外觀和風(fēng)格(javax.swing.*)AWT與SWING基本具有相同的組件,如:Button和JButton,Frame和JFrame……1.2.2組件與容器的概念及關(guān)系Java把由Component類的子類或間接子類創(chuàng)建的對象稱為一個組件,可分為容器組件和基本組件。把由Container的子類或間接子類創(chuàng)建的對象稱為一個容器兩者之間的關(guān)系:容器類是組件類的抽象子類,即容器本身也是組件;容器中可以裝入其他容器或者基本組件。1.2.3組件的分類頂層容器組件包括JFrame、JApplet、JDialog和JWindow可以獨(dú)立存在,每個界面應(yīng)屬于一個頂層容器中間容器組件JPanel、JScrollPane、JSplitPane、JTabbedPane和JToolBar等。中間容器必須依附于頂層容器或其他中間容器特殊容器組件(一些特殊的中間容器)包括JInternalFrame、JLayeredPane、JRootPane等?;窘M件基本組件是用于實(shí)現(xiàn)人機(jī)交互的組件,包括JButton等。必須依附于容器。1.2.4JFrame窗體框架設(shè)計(jì)JFame窗體通過調(diào)用方法:getContentPane(),得到它的內(nèi)容面板。如需要將按鈕b1加載到窗體myFrame上,可以通過以下語句來實(shí)現(xiàn):myFrame.getContentPane().add(b1);Containercon=myFrame.getContentPane();con.add(b1);JMenuBar
ContentPaneJFame窗體框架的基本結(jié)構(gòu)JFrame常用方法JFrame()創(chuàng)建一個無標(biāo)題的窗口。JFrame(Strings)創(chuàng)建一個標(biāo)題為s的窗口。publicvoidsetBounds(inta,intb,intwidth,intheight)設(shè)置窗口的位置和大小。publicvoidsetSize(intwidth,intheight)設(shè)置窗口大小。publicvoid
setResizable(booleanb)publicvoidsetVisible(booleanb)設(shè)置窗口是否可見,默認(rèn)為不可見。JFrame常用方法publicvoidsetResizable(booleanb)設(shè)置窗口是否可調(diào)整大小,默認(rèn)為可調(diào)整。publicvoidsetDefaultCloseOperation(intoperation)該方法用來設(shè)置單擊窗體右上角的關(guān)閉圖標(biāo)后,程序會做出怎樣的處理。其中的參數(shù)operation取下列有效值:
0DO_NOTHING_ON_CLOSE什么也不做。
1HIDE_ON_CLOSE隱藏當(dāng)前窗口。
2DISPOSE_ON_CLOSE隱藏當(dāng)前窗口,并釋放窗體占有的其它資源。
3EXIT_ON_CLOSE結(jié)束窗體所在的應(yīng)用程序。JFrame常用方法publicvoidsetTitle(Stringstr)設(shè)置窗口標(biāo)題為strpublicvoidsetIconImage(Imageimage)設(shè)置窗口的圖標(biāo)。publicvoidpack()用緊湊方式自動設(shè)置窗口大小。直接利用JFrame創(chuàng)建窗體框架用JFrame類聲明并創(chuàng)建一個窗口JFramef=newJFrame(“標(biāo)題”);設(shè)置窗口的大小f.setSize(200,300);設(shè)置窗口可見或顯示窗口f.setVisible(true);或者f.show();設(shè)置窗口關(guān)閉時的方法f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);利用JFrame子類創(chuàng)建窗體框架定義子類繼承JFrame,并在子類構(gòu)造方法中完成窗體的定義classMyFrameextendsJFrame{MyFrame(Strings){super(s);//設(shè)置標(biāo)題
setBounds(200,300);//設(shè)置大小
setVisible(true);//設(shè)置顯示
setDefaultCloseOperation(3);//設(shè)置關(guān)閉
}}定義一個主類,并在主類中創(chuàng)建該窗體一個較完整的窗體創(chuàng)建框架1.importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;2.publicclass××extends頂層容器implements××Listener{3.組件定義及初始化4.××(){//構(gòu)造方法
4.1super(“××”);//定義窗口名稱
4.2Containerc=getContentPane();//獲得內(nèi)容窗格
c.add(組件);4.3組件.addActionListener(this);//按鈕注冊事件監(jiān)聽器
4.4調(diào)整顯示效果,如
setSize(350,200);//設(shè)置窗口大小
setLocation(200,200);//設(shè)置窗口位置
setVisible(true);//顯示窗口
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setDefaultLookAndFeelDecorated(true);}}5.實(shí)現(xiàn)接口:對接口中要處理的方法編程實(shí)驗(yàn)2日歷記事本窗體設(shè)計(jì)用子類繼承JFrame的方法創(chuàng)建日歷記事本的主窗體CalendarFrame,要求滿足條件:(1)標(biāo)題為“我的日歷記事本”也可以自己定義;(2)窗體大小為(600,300),并且大小不可以改變;(3)窗體出現(xiàn)在(100,100)的位置;(4)關(guān)閉主窗體時退出應(yīng)用程序。1.3菜單的設(shè)計(jì)菜單是GUI中非常重要且常用的部分,它主要包括三個部分:菜單條、菜單和菜單項(xiàng)。菜單設(shè)計(jì)的基本原則是:菜單條JMenuBar須放在窗體中菜單JMenu須放在菜單條中菜單項(xiàng)JMenuItem須放在菜單中1.3.1JMenuBar菜單條首先應(yīng)注意每個窗體只能放置一個菜單條。常用方法:JMenuBar()構(gòu)造方法publicvoidsetJMenuBar(JMenuBarmenubar)將菜單條放到窗體中。publicvoidadd(MenuImenu)
向菜單條中增加由參數(shù)menu指定的菜單對象。創(chuàng)建菜單條的步驟:創(chuàng)建菜單條對象JMenuBarmb=newJMenuBar();將菜單條放到窗體f中f.setJMenuBar(mb);1.3.2JMenu菜單JMenu(Strings)
創(chuàng)建標(biāo)題為s的菜單。publicvoidadd(MenuItemitem)向菜單增加由參數(shù)item指定的菜單選項(xiàng)對象。publicvoidadd(Strings)向菜單增加指定的選項(xiàng)。publicJMenuItemgetItem(intn)得到指定索引處的菜單選項(xiàng)。publicintgetItemCount()菜單選項(xiàng)數(shù)目。publicvoid
addSeparator()增加分割條。創(chuàng)建菜單的步驟:聲明并創(chuàng)建菜單
JMenum1=newJMenu(“文件”);將菜單放入菜單條中
mb.add(m1);1.3.3JMenuItem菜單項(xiàng)JMenuItem(Strings)
構(gòu)造有標(biāo)題的菜單JMenuItem(Stringtext,Iconicon)
構(gòu)造有標(biāo)題和圖標(biāo)的菜單項(xiàng)publicvoidsetEnabled(booleanb)設(shè)置當(dāng)前菜單項(xiàng)是否可被選擇。publicStringgetLabel()得到菜單選項(xiàng)的名字。1.3.3JMenuItem菜單項(xiàng)publicvoidsetAccelerator(KeyStrokekeyStroke)為菜單項(xiàng)設(shè)置快捷鍵。為了向該方法的參數(shù)傳遞一個KeyStroke對象,可以使用KeyStroke類的類方法:publicstaticKeyStrokegetKeyStroke(charkeyChar)返回一個KeyStroke對象。也可以使用KeyStroke類的類方法:
publicstaticKeyStrokegetKeyStroke(intkeyCode,intmodifiers)
返回一個KeyStroke對象,其中參數(shù)keyCode取值范圍:KeyEvent.VK_A~KeyEvent.VK_Z。modifiers取值:
InputEvent.ALT_MASK、InputEvent.CTRL_MASK和InputEvent.SHIFT_MASK。1.3.3JMenuItem菜單項(xiàng)嵌入子菜單JMenu是JMenuItem的子類,因此菜單項(xiàng)本身還可以是一個菜單,稱這樣的菜單項(xiàng)為子菜單。為了使得菜單項(xiàng)有一個圖標(biāo),可以用圖標(biāo)類Icon聲明一個圖標(biāo),然后使用其子類ImageIcon類創(chuàng)建一個圖標(biāo),如:Iconicon=newImageIcon(“dog.gif”);JMenuItemm1=newJMenuItem(“加密狗",icon);JMenuItemm1=newJMenuItem(“加密狗",newImageIcon("open.gif"));創(chuàng)建菜單的過程聲明并創(chuàng)建菜單條聲明并創(chuàng)建菜單聲明并創(chuàng)建菜單項(xiàng),設(shè)置菜單項(xiàng)快捷鍵將菜單項(xiàng)添加到菜單中將菜單添加到菜單條中將菜單條添加到窗口中JMenuBarm=newJMenuBar();
JMenum1=newJMenu();
JMenuItemm11=newJMenuItem();m1.add(m11);
m.add(m1);this.setJMenuBar(m);實(shí)驗(yàn)3日歷記事本菜單設(shè)計(jì)完成日歷記事本中的菜單設(shè)計(jì),其菜單結(jié)果如下:文件編輯幫助
|_打開|_復(fù)制|_幫助主題
|_保存|_剪切|_關(guān)于…|_退出|_粘貼實(shí)驗(yàn)4多樣式菜單及快捷鍵設(shè)計(jì)菜單圖片加載為打開和保存菜單添加圖標(biāo)open.gif和save.gifm1=newJMenuItem("打開",newImageIcon("open.gif"));菜單快捷鍵設(shè)置m11.setAccelerator(KeyStroke.getKeyStroke(‘O’));m12.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));在保存和退出菜單之間加一個分隔條m1.addSeparator();將保存菜單設(shè)置為不可用1.4布局的應(yīng)用教學(xué)內(nèi)容FlowLayout流型布局GridLayout網(wǎng)格布局BoxLayout盒式布局BorderLayout邊界布局CardLayout卡片布局學(xué)習(xí)目標(biāo)掌握五種布局的方法和步驟理解布局設(shè)計(jì)的重要性及應(yīng)用布局概述當(dāng)把組件添加到容器中時,希望控制組件在容器中的位置,這就需要學(xué)習(xí)布局設(shè)計(jì)的知識。我們將分別介紹java.awt包中的FlowLayout、BorderLayout、CardLayout、GridLayout布局類和java.swing.border包中的BoxLayout布局類。對于JFrame窗口,程序只能將組件添加到它的內(nèi)容面板中,內(nèi)容面板的默認(rèn)布局是BorderLayout布局。容器可以使用方法:setLayout(布局對象);來設(shè)置自己的布局。1.4.1流型布局FlowLayout流型布局的規(guī)則:組件按照加入的先后順序從左向右排列,一行排滿之后就轉(zhuǎn)到下一行繼續(xù)從左至右排列,每一行中的組件都居中排列,組件之間默認(rèn)的水平和垂直間隙是5個像素。如何應(yīng)用流型布局?首先創(chuàng)建流型布局對象設(shè)置布局樣式(可省略)然后將該布局對象應(yīng)用到容器上1、創(chuàng)建流型布局對象構(gòu)造方法FlowLayout()FlowLayout(intalign);FlowLayout(intalign,inthgap,intvgap);FlowLayoutf1=newFlowLayout();FlowLayoutf2=newFlowLayout(0);FlowLayoutf3=newFlowLayout(0,5,5);FlowLayout.LEFT0FlowLayout.CENTER1FlowLayout.RIGHT2設(shè)置布局的水平間隙和垂直間隙2、設(shè)置布局樣式FlowLayout布局對象調(diào)用
setAlignment(intaligin)方法可以重新設(shè)置布局的對齊方式。其中aligin可以取值:FlowLayout.LEFT、FlowLayout.CENTER、FlowLayout.RIGHTFlowLayout布局對象調(diào)用setHgap(inthgap)、setVgap(intvgap)
可以重新設(shè)置布局的水平間隙和垂直間隙。3、應(yīng)用布局對象新建一個流布局對象FlowLayoutflow=newFlowLayout();設(shè)置其屬性flow.setAlignment(FlowLayout.LEFT);flow.setHgap(2);flow.setVgap(8);容器應(yīng)用布局con.setLayout(flow);第1、2兩點(diǎn)可以綜合為:FlowLayoutflow=newFlowLayout(FlowLayout.LEFT,2,8);1.4.2邊界布局BorderLayout
BorderLayout布局是Window型容器的默認(rèn)布局,例如JFrame、JDialog都是Window類的間接子類,它們的內(nèi)容面板的默認(rèn)布局都是BorderLayout布局。BorderLayout也是一種簡單的布局策略,如果一個容器使用這種布局,那么容器空間簡單地劃分為東、西、南、北、中五個區(qū)域,中間的區(qū)域最大。每加入一個組件都應(yīng)該指明把這個組件添加在哪個區(qū)域中,區(qū)域由BorderLayout中的靜態(tài)常量CENTER、NORTH、SOUTH、WEST、EAST表示,例如,一個使用BorderLayout布局的容器con,可以使用add方法將一個組件b添加到中心區(qū)域:con.add(b,BorderLayout.CENTER);注意:添加到某個區(qū)域的組件將占據(jù)整個這個區(qū)域。每個區(qū)域只能放置一個組件,如果向某個已放置了組件的區(qū)域再放置一個組件,那么先前的組件將被后者替換掉。1.4.3盒式布局用BoxLayout類可以創(chuàng)建一個布局對象,稱為盒式布局。BoxLayout在java.swing.border包中。javaswing包提供了Box類,該類也是Container類的一個子類,創(chuàng)建的容器稱作一個盒式容器,盒式容器的的默認(rèn)布局是盒式布局,而且不允許更改盒式容器的布局。因此,在策劃程序的布局時,可以利用容器的嵌套,將某個容器嵌入幾個盒式容器,達(dá)到你的布局目的。使用盒式布局的容器將組件排列在一行或一列,這取決于創(chuàng)建盒式布局對象時,是否指定了是行排列還是列排列。盒式布局的兩種樣式行型盒式布局容器中添加的組件的上沿在同一水平線上。Boxb1=Box.createHorizontalBox()列型盒式布局容器中添加的組件的左沿在同一垂直線上。Boxb2=Box.createVerticalBox()如果想控制盒式布局容器中組件之間的距離,就需要createHorizontalStrut(intwidth)可以得到一個不可見的水平Struct類型對象,稱做水平支撐。該水平支撐的高度為0,寬度是width。Box類調(diào)用靜態(tài)方法createVertialStrut(intheight)可以得到一個不可見的垂直Struct類型對象,稱做垂直支撐。參數(shù)height決定垂直支撐的高度,垂直支撐的寬度為0。盒式布局的步驟聲明并創(chuàng)建盒式布局BoxboxV1=Box.createVerticalBox();或者BoxbaseBox=Box.createHorizontalBox();向布局中添加組件boxV1.add(newJLabel("輸入您的姓名"));設(shè)置垂直支撐或水平支撐boxV1.add(Box.createVerticalStrut(8));或者baseBox.add(Box.createHorizontalStrut(10));設(shè)置容器布局con.setLayout(newFlowLayout());向容器中加載盒式布局con.add(baseBox);實(shí)驗(yàn)5日歷記事本窗體布局設(shè)計(jì)列盒布局容器列盒布局容器改變年月容器日歷展示容器農(nóng)歷及提示信息容器標(biāo)簽容器日志記事容器保存刪除按鈕容器星期容器為窗體設(shè)置流型布局向窗體中添加列盒布局容器p1創(chuàng)建一個面板p1創(chuàng)建列盒布局bv1創(chuàng)建改變年月面板容器p11將p11放入列盒bv1中創(chuàng)建星期面板容器p12將p12放入列盒bv1中創(chuàng)建建日歷面板容器p13將p13放入列盒bv1中創(chuàng)建建農(nóng)歷面板容器p14將p14放入列盒bv1中將bv1加入面板容器p1將面板p1放入窗體中向窗體中添加列盒布局容器p2創(chuàng)建一個面板p2創(chuàng)建列盒布局bv2創(chuàng)建標(biāo)簽dateLabel將dateLabel放入列盒bv2中創(chuàng)建日志文本區(qū)域容器note將note放入列盒bv2中創(chuàng)建按鈕面板容器p21將p21放入列盒bv2中將bv2加入面板容器p2將面板p2放入窗體中1.4.4卡式布局CardLayout
JTabbedPane創(chuàng)建的對象是一個輕容器,稱作選項(xiàng)卡窗格。選項(xiàng)卡窗格的默認(rèn)布局是CardLayout卡片式布局。該容器自帶一些選項(xiàng)卡,這些選項(xiàng)卡和容器中添加的組件相對應(yīng),也就是說,單擊相應(yīng)的選項(xiàng)卡時,選項(xiàng)卡窗格將顯示對應(yīng)的組件。選項(xiàng)卡窗格自帶的選項(xiàng)卡默認(rèn)地在該選項(xiàng)卡窗格的頂部,從左向右依次排列,選項(xiàng)卡的順序和容器添加的組件的順序相同。選項(xiàng)卡窗格可以使用:add(Stringtext,Componentc);方法將組件c添加到容器當(dāng)中,并指定和該組件c對應(yīng)的選項(xiàng)卡的文本提示是text。也可以使用構(gòu)造方法publicJTabbedPane(inttabPlancement)其中參數(shù)指定選項(xiàng)卡的位置,有JTabbedPane.TOP,JTabbedPane.BOTTOM,JTabbedPane.LEFT和JTabbedPane.RIGHT創(chuàng)建選項(xiàng)卡對象JTabbedPanep=newJTabbedPane(JTabbedPane.LEFT);為選項(xiàng)卡創(chuàng)建并添加頁面()p.add(“第1頁”,newJButton());加載選項(xiàng)卡到容器中con.add(p,BorderLayout.CENTER);1.4.5網(wǎng)格布局GridLayout網(wǎng)格布局規(guī)則:將容器劃分為大小相同的網(wǎng)格,最多可添加m×n個組件,每個網(wǎng)格都是相同大小并且強(qiáng)制組件與網(wǎng)格的大小相同(即每個網(wǎng)格只能放一個組件);每個網(wǎng)格中可以添加容器,而這個容器又可以設(shè)置為GridLayout布局、FlowLayout布局、CarderLayout布局或BorderLayout布局等。利用這種嵌套方法,可以設(shè)計(jì)出符合一定需要的布局。如何實(shí)施網(wǎng)格布局?與流型布局步驟一致1、創(chuàng)建網(wǎng)格布局對象構(gòu)造方法GridLayout(intm,intn)GridLayout(intm,intn,inthgap,intvgap)比如:GridLayoutg1=newnewGridLayout(10,8);GridLayoutg2=newnewGridLayout(10,8,5,10);2、將布局應(yīng)用到容器上聲明創(chuàng)建網(wǎng)格對象GridLayoutg1=newGridLayout(3,2);將網(wǎng)格布局應(yīng)用到容器上con.setLayout(g1);3、向網(wǎng)格布局容器中加組件1.4.6null空布局我們可以把一個容器的布局設(shè)置為null布局(空布局)??詹季秩萜骺梢詼?zhǔn)確地定位組件在容器的位置和大小。setBounds(inta,intb,intwidth,intheight)方法是所有組件都擁有的一個方法,組件調(diào)用該方法可以設(shè)置本身的大小和在容器中的位置。例如,p是某個容器:
p.setLayout(null);
把p的布局設(shè)置為空布局。向空布局的容器p添加一個組件c需要兩個步驟,首先使用add(c)方法向容器添加組件,然后組件c再調(diào)用setBounds(inta,intb,intwidth,intheight)方法設(shè)置該組件在容器中的位置和本身的大小,組件都是一個矩形結(jié)構(gòu),方法中的參數(shù)a,b是被添加的組件c的左上角在容器中的位置坐標(biāo),即該組件距容器左面a個像素,距容器上方b個像素;weidth,height是組件c的寬和高。實(shí)驗(yàn)6日歷布局設(shè)計(jì)日一二三四五六12345678910111213141516171819202122232425262728293031任務(wù)1:日歷面板布局創(chuàng)建星期面板p12在面板p12上應(yīng)用1×7的網(wǎng)格布局創(chuàng)建7個標(biāo)簽,并將其放入到p12中將星期面板p12放入列盒bv1中創(chuàng)建日歷面板p13在p13上應(yīng)用6×7的網(wǎng)格布局創(chuàng)建42個按鈕,并將其放入面板p13中將日歷面板p13放入列盒bv1中任務(wù)2:改變年月面板設(shè)計(jì)任務(wù)3:農(nóng)歷顯示面板設(shè)計(jì)任務(wù)4:日志按鈕面板設(shè)計(jì)1.5常用組件的使用標(biāo)簽JLabel文本框JTextField密碼框JPasswordField文本區(qū)域JTextArea按鈕JButton復(fù)選框JCheckBox單選按鈕JRadioButton中間容器面板JPanel拆分窗格JSplitPane滾動窗格JScrollPane標(biāo)簽JLabelpublicJLabel()創(chuàng)建沒有名字的標(biāo)簽。publicJLabel(Strings)創(chuàng)建名字是s的標(biāo)簽,s在標(biāo)簽中靠左對齊。publicJLabel(Strings,intaligment)參數(shù)aligment決定標(biāo)簽中的文字在標(biāo)簽中的水平對齊方式。publicJLabel(Iconicon)創(chuàng)建具有圖標(biāo)icon的標(biāo)簽,icon在標(biāo)簽中靠左對齊。publicJLabel(Strings,Iconicon,intaligment)創(chuàng)建名字是s,具有圖標(biāo)icon的標(biāo)簽,參數(shù)aligment決定標(biāo)簽中的文字和圖標(biāo)做為一個整體在標(biāo)簽中的水平對齊方式。StringgetText()獲取標(biāo)簽的名字。voidsetText(Strings)設(shè)置標(biāo)簽的名字是s。IcongetIcon()獲取標(biāo)簽的圖標(biāo)。voidsetIcon(Iconicon)設(shè)置標(biāo)簽的圖標(biāo)是iconvoidsetHorizontalTextPosition(inta)參數(shù)a確定名字相對于圖標(biāo)的位置,a的取值是:JLabel.LEFT,JLabel.RIGHT。voidsetVerticalTextPosition(inta)參數(shù)a確定名字相對于JLabel上的圖標(biāo)的位置,參數(shù)a取值是:JLabel.BOTTOM,JLabel.TOP。文本框JTextFieldJComponent的子類JTextField是專門用來建立文本框的,即JTextField創(chuàng)建的一個對象就是一個文本框。用戶可以在文本框輸入單行的文本。JTextField(intx)如果使用這個構(gòu)造方法創(chuàng)建文本框?qū)ο?,可以在文本框中輸入若干個字符,文本框的可見字符個數(shù)由參數(shù)x指定。JTextField(Strings)如果使用這個構(gòu)造方法創(chuàng)建文本框?qū)ο螅瑒t文本框的初始字符串為s,可以在文本框中輸入若干個字符。publicvoidsetText(Strings)文本框?qū)ο笳{(diào)用該方法可以設(shè)置文本框中的文本為參數(shù)s指定的文本。publicStringgetText()文本框?qū)ο笳{(diào)用該方法可以獲取文本框中的文本。publicvoidsetEditable(booleanb)文本框?qū)ο笳{(diào)用該方法可以指定文本框的可編輯性。創(chuàng)建的文本框默認(rèn)為可編輯的。publicvoidsetHorizontalAlignment(intalignment)設(shè)文本在文本框中的對齊方式,其中alignment的有效值確定對齊方式。密碼框JPasswordField使用JComponent的子類JPasswordField可以建立一個密碼框?qū)ο?。密碼框可以使用setEchoChar(charc)設(shè)置回顯字符(默認(rèn)的回顯字符是‘*’);使用char[]getPassword()方法返回密碼框中的密碼。文本區(qū)域JTextAreaJTextArea類專門用來建立文本區(qū),用戶可以在文本區(qū)輸入多行的文本。JTextArea(introws,intcolumns)構(gòu)造一個可見行和可見列分別是rows、columns的文本區(qū)。setLineWrap(booleanb)方法決定輸入的文本能否在文本區(qū)的右邊界自動換行setWrapStyleWord(booleanb)決定是以單詞為界(b取true時)或以字符為界(b取false時)進(jìn)行換行。getText()和setText(Strings)append(Strings)在文本區(qū)末尾追加字符串sinsert(Strings,intx)方法在文本區(qū)的指定位置處插入文本replaceRange(StringnewString,intstart,intend)將文本區(qū)start至end處的文本替換為新文本newStringgetCaretPosition()獲取文本區(qū)中輸入光標(biāo)的位置setCaretPosition(intposition)設(shè)置文本區(qū)中輸入光標(biāo)的置(其中position不能大于文本區(qū)中字符的個數(shù))另外,文本區(qū)還可以使用copy()和cut()方法將文本區(qū)中選中的內(nèi)容拷貝或剪切到系統(tǒng)的剪貼板,使用paste()方法將系統(tǒng)剪貼板上的文本數(shù)據(jù)粘貼在文本區(qū)中,如果文本區(qū)中有選中的內(nèi)容,paste()方法從剪貼板上取回的數(shù)據(jù)將替換選中的內(nèi)容。按鈕JButtonJButton(Stringtext)創(chuàng)建名字是text的按鈕。publicJButton(Iconicon)創(chuàng)建帶有圖標(biāo)icon的按鈕。publicJButton(Stringtext,Iconicon)創(chuàng)建名字是text且?guī)в袌D標(biāo)icon的按鈕publicvoidsetText(Stringtext)和publicStringgetText()
publicvoidsetHorizontalTextPosition(inttextPosition)設(shè)置按鈕名字相對按鈕上圖標(biāo)的水平位置,參數(shù)textPosition的有效值是:AbstractButton.LEFT、AbstractButton.CENTERT、AbstractButton.RIGHT。publicvoidsetVerticalTextPosition(inttextPosition)設(shè)置按鈕上名字相對按鈕上圖標(biāo)的垂直位置。publicvoidsetMnemonic(charmnemonic)按鈕對象調(diào)用該方法可以設(shè)置按鈕的鍵盤激活方式,mnemonic的有效值是:’a’~’z’。復(fù)選框JCheckBox復(fù)選框提供兩種狀態(tài),一種是選中,另一種是未選中,用戶通過單擊該組件切換狀態(tài)。publicJCheckBox()創(chuàng)建一個沒有名字的復(fù)選框。publicJCheckBox(Stringtext)創(chuàng)建一個名字是text的復(fù)選框。publicJCheckBox(Iconicon)創(chuàng)建一個帶有默認(rèn)圖標(biāo)icon,但沒有名字的復(fù)選框。publicJCheckBox(Stringtext,Iconicon)創(chuàng)建一個帶有默認(rèn)圖標(biāo)和名字text的復(fù)選框。publicvoidsetIcon(IcondefaultIcon)設(shè)置復(fù)選框上的默認(rèn)圖標(biāo)。publicvoidsetSelectedIcon(IconselectedIcon)設(shè)置復(fù)選框選中狀態(tài)下的圖標(biāo)publicbooleanisSelected()如果復(fù)選框處于選中狀態(tài)該方法返回true,否則返回false。如果不對復(fù)選框進(jìn)行初始化設(shè)置,默認(rèn)的初始化設(shè)置均為為選中。復(fù)選框上的ItemEvent事件當(dāng)復(fù)選框獲得監(jiān)視器之后,復(fù)選框從未選中狀態(tài)變成選中狀態(tài)或從選中狀態(tài)變成未選中狀態(tài)時就發(fā)生ItemEvent事件,ItemEvent類將自動創(chuàng)建一個事件對象。發(fā)生ItemEvent事件的事件源獲得監(jiān)視器的方法是addItemListener(ItemListenerlistener)。由于復(fù)選框可以發(fā)生ItemEvent事件,JCheckBox類提供了addItemListener方法。處理ItemEvent事件的接口是ItemListener,創(chuàng)建監(jiān)視器的類必須實(shí)現(xiàn)ItemListener接口,該接口中只有一個的方法。當(dāng)在復(fù)選框發(fā)生ItemEvent事件時,監(jiān)視器將自動調(diào)用接口方法:publicvoiditemStateChanged(ItemEvente)對發(fā)生的事件作出處理。ItemEvent類中的方法getItemSelectable()返回Itemevent事件的事件源。單選按鈕JRadioButton單選按鈕和復(fù)選框很類似,所不同的是:在若干個復(fù)選框中我們可以同時選中多個,而一組單選按鈕同一時刻只能有一個被選中。當(dāng)創(chuàng)建了若干個單選按鈕后,應(yīng)使用ButtonGroup再創(chuàng)建一個對象,然后利用這個對象把這若干個單選按鈕歸組。歸到同一組的單選按鈕每一時刻只能選一。中間容器面板JPanel我們會經(jīng)常使用JPanel創(chuàng)建一個面板,再向這個面板添加組件,然后把這個面板添加到底層容器或其他中間容器中。JPanel面板的默認(rèn)布局是FlowLayout布局。JPanel()構(gòu)造一個面板容器對象JPanelp1;p1=newJPanel();JPanelp2=newJPanel();拆分窗格JSplitPane拆分窗格就是被分成兩部分的容器。拆分窗格有兩種類型:水平拆分和垂直拆分。水平拆分窗口用一條拆分線把容器分成左右兩部分,左面放一個組件,右面放一個組件,拆分線可以水平移動。垂直拆分窗格由一條拆分線分成上下兩部分,上面放一個組件,下面放一個組件,拆分線可以垂直移動。JSplitPane(inta,Componentb,Componentc)構(gòu)造一個拆分窗格,參數(shù)a取JSplitPane的靜態(tài)常量HORIZONTAL_SPLIT或VERTICAL_SPLIT,以決定是水平還是垂直拆分。后兩個參數(shù)決定要放置的組件。setDividerLocation(doubleposition)設(shè)置拆分線的位置。滾動窗格JScrollPane如果我們需要通過滾動條來觀察一個組件,可以把一個組件放到一個滾動窗格中。JScorollPane(componentc)構(gòu)造一個滾動窗格。例如:JTextArea不自帶滾動條,因此我們就需要把文本區(qū)放到一個滾動窗格中。JTextAreatext1=newJTextArea(12,14);con.add(newJScorollPane(text1));分別設(shè)置水平和垂直滾動條自動出現(xiàn)scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);分別設(shè)置水平和垂直滾動條總是出現(xiàn)scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
分別設(shè)置水平和垂直滾動條總是隱藏scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
實(shí)驗(yàn)7日歷展示設(shè)計(jì)與實(shí)現(xiàn)任務(wù)1:聲明并創(chuàng)建日歷類對象mydate任務(wù)2:設(shè)置日歷的年月日,并獲取日歷分布數(shù)組任務(wù)3:將日歷數(shù)組保存的分布對應(yīng)到按鈕上。javax.swing.Border的使用見word文檔實(shí)驗(yàn)8界面顯示的優(yōu)化任務(wù)1:將日歷中周日列和周六列的字體顏色分別設(shè)置為紅色和藍(lán)色label.setForeGround(Color.red);任務(wù)2:將星期的字體設(shè)置為12號的隸書,并且加粗;并且將日歷的字體設(shè)置為12號黑體。label.setFont(newFont(“隸書”,Font.BOLD,12))任務(wù)3:在上年、下年、上月和下月按鈕設(shè)置快捷鍵;在保存和刪除按鈕上增加圖標(biāo)。
priYear.setMnemonic(‘P’);JButtonsava=newJButton(“保存”,newImageIcon(“save.gif”));任務(wù)4:將星期標(biāo)簽凸出顯示Borderborder1=BorderFactory.createBevelBorder(BevelBorder.RAISED);xqLabel[i].setBorder(border1);任務(wù)5:將日歷按鈕凹下顯示Borderborder2=BorderFactory.createBevelBorder(BevelBorder.LOWERED);rlButton[i].setBorder(border2);事件的處理主要內(nèi)容ActionEvent行為事件FocusEvent焦點(diǎn)事件WindowEvent窗體事件MouseEvent鼠標(biāo)事件KeyEvent鍵盤事件教學(xué)目標(biāo)掌握事件處理機(jī)制掌握各種事件處理的方法及應(yīng)用0、事件處理機(jī)制通知發(fā)生XXX事件事件源.addXXXListener(存放監(jiān)視器引用的接口)接口方法(XXXe)
實(shí)現(xiàn)XXXListener接口的監(jiān)視器接口回調(diào)圖1事件處理事件源能夠產(chǎn)生事件的對象都可以成為事件源,如文本框、按鈕、下拉式列表等。也就是說,事件源必須是一個對象,而且這個對象必須是Java認(rèn)為能夠發(fā)生事件的對象。監(jiān)視器我們需要一個對象對事件源進(jìn)行監(jiān)視,以便對發(fā)生的事件作出處理。事件源通過調(diào)用相應(yīng)的方法將某個對象作為自己的監(jiān)視器。監(jiān)視器就好比一個崗哨,只要事件源上發(fā)生了任何事情,都能夠馬上被崗哨發(fā)現(xiàn)。例如,對于一個事件源可以通過以下方法加載監(jiān)視器:
add****Listener(ActioListenerlistener)
對于獲取了監(jiān)視器的事件源對象,在獲得事件響應(yīng)后,Java運(yùn)行系統(tǒng)就自動用****Event類創(chuàng)建了一個對象,即發(fā)生了****Event事件。處理事件監(jiān)視器負(fù)責(zé)調(diào)用特定的方法處理事件,也就是說創(chuàng)建監(jiān)視器的類必須提供處理事件的特定方法,即實(shí)現(xiàn)接口方法。Java采用接口回調(diào)技術(shù)來處理事件,當(dāng)事件源發(fā)生事件時,接口立刻通知監(jiān)視器自動調(diào)用實(shí)現(xiàn)的某個接口方法,由接口方法規(guī)定了怎樣處理事件的操作。接口回調(diào)這一過程對程序是不可見的,Java在設(shè)計(jì)組件事件時已經(jīng)設(shè)置好了回調(diào)過程,程序只需讓事件源獲得正確的監(jiān)視器即可自動完成事件處理。注意:為了能監(jiān)視到這種類型的事件,事件源必須使用add****Listener方法獲得監(jiān)視器。1、ActionEvent為類引用ActionListener接口classCalendarFrameextendsJFrameimplementsActionListener{為事件源加載監(jiān)視器
nextYear.addActionListener(this);重寫事件處理方法publicvoidactionPerformed(ActionEvente){
if(e.getSource()==nextYear){//需要完成的處理事件}}JAVA的ActionEvent類的事件對象提供了如下方法去獲得觸發(fā)事件的事件源:
publicObjectgetSource()可以返回發(fā)生ActionEvent事件的對象的引用。實(shí)驗(yàn)9日歷調(diào)整顯示設(shè)計(jì)任務(wù)1:完成點(diǎn)擊上年、下年將dateText文本框中數(shù)字加1或減1的功能;任務(wù)2:完成上月、下月將monthLabel標(biāo)簽中數(shù)字加1或者減1的功能;思考:如何限制年月不超過實(shí)際限制?任務(wù)3:當(dāng)改變年月時,將日歷分布也隨之改變。任務(wù)4:完成dateText文本框的回車事件,完成日歷改變2、FocusEvent為類引用FocusListener接口classCalendarFrameextendsJFrameimplementsActionListener,FocusListener{為事件源加載監(jiān)視器
nextYear.addFocusListener(this);重寫事件處理方法publicvoidfocusGained(FocusEvente){}publicvoidfocusLost(FocusEvente){}
JAVA的FocusEvent類的事件對象提供了如下方法去獲得觸發(fā)事件的事件源:
publicObjectgetSource()可以返回發(fā)生FocusEvent事件的對象的引用。實(shí)驗(yàn)10日歷按鈕點(diǎn)擊事件處理任務(wù)1:當(dāng)日歷按鈕獲得焦點(diǎn)時,將該按鈕背景設(shè)置為灰色Color.gray;任務(wù)2:當(dāng)點(diǎn)擊日歷按鈕時,將當(dāng)前年月日顯示在標(biāo)簽dateLabel中,如:2010年10月1日;任務(wù)3:當(dāng)點(diǎn)擊日歷按鈕時,在“農(nóng)歷及提示信息面板”中顯示對應(yīng)日期的農(nóng)歷信息。WindowEvent1、引用WindowListener接口JFrame類是Window類的子類,Window型對象都能觸發(fā)WindowEvent事件。當(dāng)一個JFrame窗口被激活、撤消激活、打開、關(guān)閉、圖標(biāo)化或撤消圖標(biāo)化時,就引發(fā)了窗口事件,即WindowEvent創(chuàng)建一個窗口事件對象。WindowEvent2、加載監(jiān)視器addWindowlistener(Windowlistenerlistener)3、實(shí)現(xiàn)WindowListener接口中的所有抽象方法publicvoidwindowActivated(WindowEvente)當(dāng)窗口從非激活狀態(tài)到激活時調(diào)用該方法。publicvoidwindowDeactivated(WindowEvente)當(dāng)窗口激活狀態(tài)到非激活狀態(tài)時調(diào)用該方法。publicvoidwindowClosing(WindowEvente)當(dāng)窗口正在被關(guān)閉時調(diào)用該方法。publicvoidwindowClosed(WindowEvente)當(dāng)窗口關(guān)閉時調(diào)用該方法。publicvoidwindowIconified(WindowEvente)當(dāng)窗口圖標(biāo)化時調(diào)用該方法。publicvoidwindowDeiconified(WindowEvente)
當(dāng)窗口撤消圖標(biāo)化時,窗口監(jiān)視器調(diào)用。publicvoidwindowOpened(WindowEvente)
當(dāng)窗口打開時,窗口的監(jiān)視器調(diào)用該方法。WindowEvent創(chuàng)建的事件對象通過getWindow()方法可以獲取發(fā)生窗口事件的窗口。WindowEvent事件處理方法2WindowAdapter適配器:接口中如果有多個方法會給使用者帶來諸多不便,因?yàn)閷?shí)現(xiàn)這個接口的類必須要實(shí)現(xiàn)接口中的全部方法,否則這個類必須是一個abstract類。為了給編程人員提供方便,Java提供的接口,如果其中的方法多于一個,Java同時就提供一個相關(guān)的稱作適配器的類,這個適配器是已經(jīng)實(shí)現(xiàn)了相應(yīng)接口的類。舉例:關(guān)閉窗體時退出應(yīng)用程序MouseEvent1、引用接口Java分別使用兩個接口來處理鼠標(biāo)事件MouseListener接口與MouseMotionListener接口2、加載監(jiān)視器addMouseListener(MouseListenerlistener)addMouseMotionListener(MouseListenerlistener)3、實(shí)現(xiàn)接口中的所有抽象方法mouseEntered(MouseEvente)
負(fù)責(zé)處理鼠標(biāo)進(jìn)入組件觸發(fā)的鼠標(biāo)事件。mouseExited(MouseEvente)
負(fù)責(zé)處理鼠標(biāo)退出組件觸發(fā)的鼠標(biāo)事件。mousePressed(MouseEvent)
負(fù)責(zé)處理鼠標(biāo)按下觸發(fā)的鼠標(biāo)事件。mouseReleased(MouseEvente)負(fù)責(zé)處理鼠標(biāo)釋放觸發(fā)的鼠標(biāo)事件。mouseClicked(MouseEvente)負(fù)責(zé)處理鼠標(biāo)單擊或連擊觸發(fā)的鼠標(biāo)事件。MouseMotionListener的抽象方法mouseDragged(MouseEvente)在組件上拖動鼠標(biāo)指針mouseMoved(MouseEvente)在組件上運(yùn)動鼠標(biāo)指針處理鼠標(biāo)事件中常用的方法getX()
鼠標(biāo)事件調(diào)用該方法返回觸發(fā)當(dāng)前鼠標(biāo)事件時,鼠標(biāo)指針在事件源坐標(biāo)系中的x-坐標(biāo)。getY()
鼠標(biāo)事件調(diào)用該方法返回觸發(fā)當(dāng)前鼠標(biāo)事件時,鼠標(biāo)指針在事件源坐標(biāo)系中的y-坐標(biāo)。getClickCount()
鼠標(biāo)事件調(diào)用該方法返回鼠標(biāo)被連續(xù)單擊的次數(shù)。getModifiers()鼠標(biāo)事件調(diào)用該方法返回一個整數(shù)值,如果是通過鼠標(biāo)左鍵觸發(fā)的鼠標(biāo)事件,該方法返回的值等于InputEvent類中的類常量BUTTON1_MASK;如果是右鍵返回的是InputEvent類中的類常量BUTTON3_MASK來表示。getSource()
鼠標(biāo)事件調(diào)用該方法返回觸發(fā)當(dāng)前鼠標(biāo)事件的事件源。
溫馨提示
- 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ù)與創(chuàng)新教育考核試卷
- 體驗(yàn)式購物對服裝零售業(yè)的影響考核試卷
- 品牌的力量塑造卓越品牌賦能企業(yè)發(fā)展考核試卷
- 發(fā)動機(jī)的燃燒過程和能量轉(zhuǎn)換原理考核試卷
- 2024年雙金屬溫度計(jì)項(xiàng)目申請報(bào)告
- 2024-2030年中國電站鍋爐行業(yè)競爭力策略及未來發(fā)展趨勢分析報(bào)告
- 2024-2030年中國電壓力煲行業(yè)營銷模式及投資前景預(yù)測報(bào)告
- 2024-2030年中國電動公交車行業(yè)競爭策略及投資經(jīng)營模式分析報(bào)告
- 2024-2030年中國用于個人護(hù)理的廣譜過濾劑行業(yè)需求態(tài)勢與投資前景預(yù)測報(bào)告
- 2024-2030年中國生物接觸氧化塔項(xiàng)目可行性研究報(bào)告
- 海南省義務(wù)教育學(xué)校辦學(xué)基本標(biāo)準(zhǔn)(試行)
- 卟啉病(改)課件
- 過程流程圖專業(yè)知識講座
- 民航M9英語詞匯練習(xí)
- 處方書寫規(guī)范-課件
- GB/T 12727-2023核電廠安全重要電氣設(shè)備鑒定
- 部編版道德與法治六年級下冊第二單元《愛護(hù)地球共同責(zé)任》大單元作業(yè)設(shè)計(jì)
- 2023年重慶移動招聘考試試題(附答案)
- 故障車輛應(yīng)急調(diào)換方案
- 2023年中小學(xué)教師心理健康教育試卷(含答案)
- 金融隨機(jī)分析2課后答案
評論
0/150
提交評論