第七章 圖形界面設(shè)計及事件處理_第1頁
第七章 圖形界面設(shè)計及事件處理_第2頁
第七章 圖形界面設(shè)計及事件處理_第3頁
第七章 圖形界面設(shè)計及事件處理_第4頁
第七章 圖形界面設(shè)計及事件處理_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第七章

圖形界面設(shè)計及事件處理

提綱教學(xué)要求了解Java組件使用的基本方法掌握J(rèn)ava界面組成方式及常用的布局管理方式(邊界、流式、網(wǎng)格)的使用掌握事件處理方式熟練掌握常用組件JButton和JLabel相關(guān)編程熟練掌握String類、8種基本數(shù)據(jù)類型、常用運算符的使用本次課內(nèi)容組件簡介界面組成方式要求:了解Java的界面組件掌握界面組成方式圖形界面體系組件部分自繪制部分圖形界面體系組件簡介有Awt組件和Swing組件2種AWT組件是JDK1.0和1.1平臺用于開發(fā)GUI的工具,由于與操作系統(tǒng)聯(lián)系緊密,被稱為重量級組件,可移植性不好。Swing組件稱為輕量級組件,在AWT組件名稱前冠以J字母就是其對應(yīng)的Swing組件,例如,在AWT中的Button類,在Swing中為Jbutton。AWT存在于java.awt包中,Swing組件存在于javax.swing包中。Swing組件與AWT組件的最大不同是:Swing組件完全由Java語言實現(xiàn),功能更強(qiáng)大,而AWT而不是。Awt組件類關(guān)系結(jié)構(gòu)(一)java.awt.ComponentButtonCanvasContainerChoiceCheckboxTextComponentLabelScrollbarListPanelScrollPaneWindowTextFieldTextAreaAppletFrameDialogFileDialogMenuComponentMenuItemMenuBarMenuPopupMenuCheckboxMenuItemAwt組件類關(guān)系結(jié)構(gòu)(二)---菜單Swing組件類關(guān)系結(jié)構(gòu)ContainerComponentWindowJFrameJDialogJFileDialogFrameDialogJComponentJComboboxJTextComponentJLabelJListJPanelJScrollerJTextFieldJTextAreaJMenuBarAbstractButtonJButtonJToggleButtonJMenuItemSwing組件1)頂層容器:JFrame,JApplet,JDialog,JWindow共4個2)中間容器:JPanel,JScrollPane,JSplitPane,JToolBar

3)特殊容器:在GUI上起特殊作用的中間層,如JInternalFrame,JLayeredPane,JRootPane.4)基本控件:實現(xiàn)人機(jī)交互的組件,如JButton,JComboBox,JList,JMenu,JSlider,JTextField等。5)不可編輯信息的顯示:向用戶顯示不可編輯信息的組件,例如JLabel,JProgressBar,ToolTip等。6)可編輯信息的顯示:向用戶顯示能被編輯的格式化信息的組件,如JColorChooser,JFileChoose,JFileChooser,JTable,JTextArea等。

Swing組件的使用辦法容器類組件一般常用add函數(shù)在界面上添加組件基本控件帶文本顯示類控件:JButtonJTextFieldJLabelJTextArea等常用setText(Strings)修改文本,用getText()獲得文本Swing組件的使用辦法列表類組件JComboBox

JList

JTree

JTable一般通過getSelectedIndex()獲得選中的條目編號,

getSelectedItem()或者getSelectedValue()獲得選中的條目舉例Swing組件的使用辦法Swing組件的使用辦法—舉例在指定地址端口建立服務(wù)器newServerSocket(Integer.parseInt(jTextField2.getText()),10);在狀態(tài)標(biāo)簽上提示在數(shù)據(jù)接收窗口顯示數(shù)據(jù)dr1=(DefaultTableModel)this.jTable1.getModel();dr1.insertRow(0,rows);保存接收數(shù)據(jù)dr1.getValueAt(i,j)this.jLabel3.setText("服務(wù)器"+this.jTextField2.getText()+"已啟動");JButtonJTextFieldJMenuBar上的JMenuJFrame例:計算器界面各部分的表示界面組成方式外圍頂層容器中間件(容器)基本組件1、外圍頂層容器:可獨立存在,但是不可放到其他組件中Awt組件:Frame、Dialog、Window、AppletSwing組件:JFrame、JDialog、JWindow、JApplet2、中間件:上面可容納其他組件,但自身也必須位于其他容器中Awt組件:PanelSwing組件:JPanel和以Pane結(jié)尾的所有類3、基本組件:上面不可容納其他組件,而且自身也必須位于其他容器中除了1、2之外的所有組件類對象界面組成方式界面組成實例---計算器界面一個JFrame三個JPanel多個JButton界面組成實例---計算器界面界面布局流式布局(FlowLayout)P253網(wǎng)格布局(GridLayout)P257邊框式布局(BorderLayout)P253其他布局流式布局(FlowLayout)布局原則:按照組件添加的先后次序遵循從左到右、從上到下的規(guī)律對組件進(jìn)行排版布局不改變組件原來的大小使用步驟產(chǎn)生一個布局管理器,即一個FlowLayout對象例如:FlowLayoutl1=newFlowLayout();把一個容器的布局交由這個布局管理器管理例如:JFramej1=newJFrame();j1.setLayout(l1);第3個JPanel使用流式布局的效果網(wǎng)格布局(GridLayout)布局原則:把容器等分成多行多列,把組件按照先來后到的次序等大小從左到右、從上到下安放在對應(yīng)網(wǎng)格中會改變組件大小使用步驟產(chǎn)生一個布局管理器,即一個GridLayout對象例如:GridLayoutl1=newGridLayout(3,4);把一個容器的布局交由這個布局管理器管理例如:JFramej1=newJFrame();j1.setLayout(l1);第3個JPanel使用網(wǎng)格布局的過程示意GridLayoutl1=newGridLayout(4,5);邊界布局(BorderLayout)布局原則:把容器分成North、South、East、West和Center五個部分,每個部分只顯示一個組件會改變組件大小使用步驟產(chǎn)生一個布局管理器,即一個BorderLayout對象例如:BorderLayoutl1=newBorderLayout();把一個容器的布局交由這個布局管理器管理例如:JFramej1=newJFrame();j1.setLayout(l1);NorthWestEastCenterSouth邊界布局的特點邊界布局實例一個JTextField位于North一個JPanel位于Center一個JPanel位于North邊界布局舉例一個JPanel位于West一個JPanel位于Center提問使用前面3種布局方式管理這個界面,界面第一次應(yīng)如何劃分?用什么方式布局?BorderLayout一個JFrame界面組成實例---計算器界面計算器界面的程序?qū)崿F(xiàn)publicclassJisuanqiextendsJFrame{JTextFieldjt1;JPaneljpzong;JPaneljpwest;JPaneljpnorth;JPaneljpcenter;JButtonjbnorth[]=newJButton[3];JButtonjbwest[]=newJButton[4];JButtonjbcenter[]=newJButton[20];//界面初始化publicJisuanqi(){//制作文本框jt1=newJTextField("0.");//制作面板jpzong=newJPanel();jpwest=newJPanel();jpnorth=newJPanel();jpcenter=newJPanel();//制作按鈕for(inti=0;i<jbnorth.length;i++){jbnorth[i]=newJButton("north"+i);}for(inti=0;i<jbwest.length;i++){jbwest[i]=newJButton("west"+i);}for(inti=0;i<jbcenter.length;i++){jbcenter[i]=newJButton("center"+i);}

//布局North面板GridLayoutg1=newGridLayout(1,3);jpnorth.setLayout(g1);for(inti=0;i<jbnorth.length;i++){jpnorth.add(jbnorth[i]);}

//布局West面板g1=newGridLayout(4,1);

jpwest.setLayout(g1);for(inti=0;i<jbwest.length;i++){

jpwest.add(jbwest[i]);}

//布局Center面板g1=newGridLayout(4,5);

jpcenter.setLayout(g1);for(inti=0;i<jbcenter.length;i++){

jpcenter.add(jbcenter[i]);}

//布局zong面板BorderLayoutb1=newBorderLayout();jpzong.setLayout(b1);jpzong.add(jpnorth,BorderLayout.NORTH);jpzong.add(jpwest,BorderLayout.WEST);jpzong.add(jpcenter,BorderLayout.CENTER);

//布局JFrameb1=newBorderLayout();this.add(jt1,BorderLayout.NORTH);this.add(jpzong,BorderLayout.CENTER);

//設(shè)置計算器界面屬性this.setSize(400,300);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}

//在main函數(shù)中生成計算器界面publicstaticvoidmain(Stringargs[]){

}}Jisuanqij1=newJisuanqi();j1.setTitle("計算器");事件:用戶發(fā)出命令,事件ID(標(biāo)志不同的事件)事件類(記錄事件發(fā)生的地點以及相關(guān)數(shù)據(jù))事件處理事件監(jiān)聽(處理)者:具備一定標(biāo)志,能夠處理一定事件的類(對象)事件源:圖形用戶界面上每個可能產(chǎn)生事件的組件。注冊監(jiān)聽:建立事件源與事件監(jiān)聽者之間的關(guān)系事件源事件監(jiān)聽處理者事件(ID,事件類)事件處理(過程)ComponentEventInputEventjava.util.EventObjectjava.awt.AWTEventActionEventTextEventAdjustmentEventItemEventContainerEventFocusEventPaintEventWindowEventMouseEventKeyEvent事件類事件類大部分都在java.awt.event包中監(jiān)聽接口:事件類的Event換成Listener事件監(jiān)聽者類例如:ActionEvent事件的監(jiān)聽者即為ActionListener實現(xiàn)類監(jiān)聽接口的類即為監(jiān)聽者類例如:classximplementsActionListener{…publicvoidactionPerformed(ActionEventevt){}}事件處理函數(shù)publicvoidactionPerformed(ActionEventevt){}ACTION_PERFORMED事件源publicvoidactionPerformed(ActionEvente){………}目標(biāo):點擊以下數(shù)字按鈕,文本框上能出現(xiàn)相應(yīng)的數(shù)字事件源例如:點擊5按鈕時,文本框上顯示5事件源:一個JButton-----jbutton1事件監(jiān)聽者:有2種情況第一種情況:監(jiān)聽者是含有事件源的界面publicclassJisuanqiextendsJFrameimplementsActionListener{…………publicvoidactionPerformed(ActionEventevt){……………..}事件監(jiān)聽者(一)第二種情況:監(jiān)聽者是其他類publicclassQitaimplementsActionListener{…………publicvoidactionPerformed(ActionEventevt){……………..}事件監(jiān)聽者(二)注冊監(jiān)聽jbutton1.addActionListener(newQita())jbutton1.addActionListener(newJisuanqi())連續(xù)加法2個全局操作數(shù)全局操作數(shù)在什么地方定義?類中定義,不要在函數(shù)中定義。如何獲得按鈕上(jbutton1)的內(nèi)容?Strings=jbutton1.getText();如何修改文本框上(jt1)的內(nèi)容?jt1.setText(“5”);數(shù)到字符串的轉(zhuǎn)換inti=789;Strings=(String)i;Strings=Integer.toString(i);Strings=“”+i;字符串到數(shù)的轉(zhuǎn)換Strings=“15.6”;f

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論