34739-00胡維華java語(yǔ)言程序設(shè)計(jì)電子課件第9章_第1頁(yè)
34739-00胡維華java語(yǔ)言程序設(shè)計(jì)電子課件第9章_第2頁(yè)
34739-00胡維華java語(yǔ)言程序設(shè)計(jì)電子課件第9章_第3頁(yè)
34739-00胡維華java語(yǔ)言程序設(shè)計(jì)電子課件第9章_第4頁(yè)
34739-00胡維華java語(yǔ)言程序設(shè)計(jì)電子課件第9章_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第9章 圖形用戶界面 29.1、Swing組件 3圖形用戶界面編程概述 兩個(gè)用于圖形用戶界面編程的包:AWT和Swing 圖形界面上顯示的各種對(duì)象都稱為GUI控件組件:構(gòu)成圖形界面的基本元素,不能容納其他組件,如按鈕、文本框等 容器:用來(lái)容納其他組件的區(qū)域,如面板、框架等。有的容器還可以容納其它容器。 4框架(Frame) import java.awt.*;import javax.swing.*;class SimpleFrame extends JFrameprivate JLabel lb;SimpleFrame() setTitle(框架示例);setLocation(300,200

2、); setSize(300,200);setDefaultCloseOperation(EXIT_ON_CLOSE); lb = new JLabel(“我愛(ài)Java, SwingConstants.CENTER);Container c = getContentPane();c.add(lb); 5框架(Frame) import java.awt.*;import javax.swing.*;class SimpleFrame extends JFrameprivate JLabel lb;SimpleFrame() setTitle(框架示例);setLocation(300,200)

3、; setSize(300,200);setDefaultCloseOperation(EXIT_ON_CLOSE); lb = new JLabel(“我愛(ài)Java, SwingConstants.CENTER);add(lb); 6框架(JFrame) class SimpleFrameDemopublic static void main(String args)SimpleFrame frm = new SimpleFrame();frm.setVisible(true);import javax.swing.*;import java.awt.*;class ButtonFrame

4、extends JFrameprivate JButton btnChinese,btnEnglish;ButtonFrame()setTitle(按鈕示例);setBounds(300,200,300,200);btnChinese = new JButton(中文);btnEnglish = new JButton(English);JPanel p = new JPanel();p.add(btnChinese);p.add(btnEnglish);setContentPane(p);setDefaultCloseOperation(EXIT_ON_CLOSE);class Button

5、FrameDemopublic static void main(String args)ButtonFrame frm = new ButtonFrame();frm.setVisible(true);8構(gòu)造方法說(shuō)明JTextField( )創(chuàng)建一個(gè)文本框JTextField(int n)創(chuàng)建一個(gè)列寬為n的空文本框JTextField(String s)創(chuàng)建一個(gè)文本框,并顯示字符串sJTextField(String s,int n)創(chuàng)建一個(gè)文本框,并以指定的字寬n顯示字符串s方法說(shuō)明void setFont(Font f)設(shè)置字體void setHorizontalAlignment(in

6、t alig)設(shè)置文本的水平對(duì)齊方式(LEFT、CENTER、RIGHT)void addActionListener(ActionListener e)添加指定的動(dòng)作事件監(jiān)聽(tīng)程序9構(gòu)造方法說(shuō)明JTextArea ()創(chuàng)建一個(gè)文本區(qū)JTextArea (int n,int m)創(chuàng)建一個(gè)具有n行m列的文本區(qū)JTextArea(String s)創(chuàng)建一文本區(qū),并顯示字符串sJTextArea(String s,int n,int m)創(chuàng)建一個(gè)文本區(qū),并以指定的行數(shù)n和列數(shù)m顯示字符串s方法說(shuō)明void insert(String str,int pos)在文本區(qū)的指定位置插入指定的文本void a

7、ppend(String str)將指定的文本添加到文本區(qū)中內(nèi)容的末尾void replaceRange(String str, int start, int end)將文本區(qū)中指定范圍的文本用指定的新文本替換int getRows( )返回文本區(qū)的行數(shù)void setRows(int rows)設(shè)置文本區(qū)的行數(shù)import javax.swing.*;class TextFrame extends JFrameprivate JLabel lblName, lblRemark;private JTextField tf;private JTextArea ta;TextFrame()lblN

8、ame = new JLabel(名稱:);lblRemark = new JLabel(備注:);tf = new JTextField(20);ta = new JTextArea(5,20);/5行20列ta.setLineWrap(true); ta.setWrapStyleWord(true); setTitle(文本框與文本區(qū)示例);setBounds(300,200,300,170);setDefaultCloseOperation(EXIT_ON_CLOSE);JPanel p = new JPanel();p.add(lblName); p.add(tf);p.add(lbl

9、Remark); p.add(ta);setContentPane(p);class TextFrameDemo public static void main(String args)TextFrame frm = new TextFrame();frm.setVisible(true);119.2、布局管理器 12布局管理器決定組件在界面中所處的位置和大小 創(chuàng)建一個(gè)布局管理器對(duì)象將布局管理器對(duì)象指定為容器的布局管理者五種布局管理器FlowLayout GridLayoutBorderLayoutCardLayoutGridBagLayoutimport javax.swing.*;impo

10、rt java.awt.*;class FlowLayoutFrame extends JFrameJButton b1 = new JButton(確定);JButton b2 = new JButton(取消);JButton b3 = new JButton(重置);JButton b4 = new JButton(返回);JButton b5 = new JButton(放棄);FlowLayoutFrame()setTitle(流布局器示例);setSize(300,200);setLocation(300,200);setDefaultCloseOperation(JFrame.E

11、XIT_ON_CLOSE);JPanel p = new JPanel();p.setLayout(new FlowLayout();p.add(b1);p.add(b2);p.add(b3);p.add(b4);p.add(b5);setContentPane(p); 14FlowLayout從上到下、從左到右進(jìn)行放置。當(dāng)容器的大小變化時(shí),組件的大小不變,但是相對(duì)位置會(huì)發(fā)生變化。構(gòu)造方法主要下面幾種: FlowLayout(FlowLayout.RIGHT,20,40); FlowLayout(FlowLayout.LEFT);FlowLayout(); /缺省的對(duì)齊方式居中對(duì)齊,橫向間隔和

12、縱向間隔都是缺省值5個(gè)象素15BorderLayout把容器分成5個(gè)區(qū)域:North,South,East,West和Center,每個(gè)區(qū)域只能放置一個(gè)組件。 上北、下南、左西、右東、中當(dāng)容器的大小變化時(shí),按鈕相應(yīng)的位置不變化,但其大小改變。 是Window,F(xiàn)rame和Dialog的缺省布局管理器。 構(gòu)造方法主要下面2種BorderLayout(int h,int v) /h,v組件間的水平和垂直距離BorderLayout() / 組件的垂直和水平間隔為0。class BorderLayoutFrame extends JFrameJButton btnEast = new JButton

13、(按鈕東);JButton btnWest = new JButton(按鈕西);JButton btnSouth = new JButton(按鈕南);JButton btnNorth = new JButton(按鈕北);JButton btnCenter = new JButton(按鈕中);BorderLayoutFrame()setTitle(邊界布局器示例);setSize(300,200);setLocation(300,200);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JPanel p = new JPanel(); p.s

14、etLayout(new BorderLayout();p.add(btnEast,BorderLayout.EAST);p.add(btnWest,BorderLayout.WEST);p.add(btnSouth,BorderLayout.SOUTH);p.add(btnNorth,BorderLayout.NORTH);p.add(btnCenter,BorderLayout.CENTER);setContentPane(p); 17GridLayout (java.awt.GridLayout)將空間劃分為由行和列組成的網(wǎng)格單元,每個(gè)單元放一個(gè)組件,網(wǎng)格單元大小相同指定行數(shù)和列數(shù)Gri

15、dLayout類的構(gòu)造函數(shù)public GridLayout ( ) 生成一個(gè)行數(shù)為1的布局管理器對(duì)象。public GridLayout ( int rows, int cols )public GridLayout (int rows, int cols , int hgap, int vgap )import javax.swing.*;import java.awt.*;class GridLayoutFrame extends JFrameString strArr = 北京,上海,廣州,杭州,南京,廈門(mén),西安,無(wú)錫,青島;JButton btnArr;GridLayoutFrame

16、()setTitle(網(wǎng)格布局器示例);setSize(300,200);setLocation(300,200);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JPanel p = new JPanel();p.setLayout(new GridLayout(3,3,10,10);btnArr = new JButton9;for(int i = 0; i strArr.length; i+)btnArri = new JButton(strArri);p.add(btnArri);setContentPane(p); 19文本行一個(gè)單行的文

17、本域,可接受從鍵盤(pán)輸入的信息AWT用TextField表示,Swing 用JTextField表示TextField類常用的方法:1. public TextField( ):3個(gè)字符的空文本行。2. public TextField(int cols) 3. public TextField(String text)4. public TextField(String text, int cols)5. public getText();6. public void setEchoChar( char c ) 設(shè)置用戶輸入的響應(yīng)字符,防止他人偷看。20文本區(qū)一個(gè)多行的文本域,內(nèi)容超出顯示范圍

18、時(shí),具有滾動(dòng)顯示的功能AWT用TextArea表示,Swing 用JTextArea表示TextArea類常用的方法:1. public TextArea( ) 2. public TextArea( String text ) 3. public TextArea( int rows, int columns ) 4. public TextArea( String text, int rows, int columns ) 5. public TextArea( String text, int rows, int columns, int scrollbars )218.3、事件處理 事

19、件(Event)用戶對(duì)界面操作的描述鼠標(biāo)移動(dòng)、鼠標(biāo)點(diǎn)擊、鍵盤(pán)鍵入等事件類ActionEvent:?jiǎn)螕舭粹o;文本域中按回車鍵KeyEvent:按鍵時(shí)觸發(fā)ItemEvent:列表類,當(dāng)選項(xiàng)狀態(tài)發(fā)生變化時(shí)每個(gè)組件能產(chǎn)生的事件是確定的。事件處理模型事件源產(chǎn)生事件事件送給監(jiān)聽(tīng)器監(jiān)聽(tīng)器處理事件(執(zhí)行監(jiān)聽(tīng)器的某個(gè)方法)如何實(shí)現(xiàn)事件處理定義監(jiān)聽(tīng)器類對(duì)于事件XXXEvent, 要想接收并處理這類事件,必須定義相應(yīng)的事件監(jiān)聽(tīng)器類,該類需要實(shí)現(xiàn)與該事件相對(duì)應(yīng)的接口XXXListener事件監(jiān)聽(tīng)注冊(cè)(委托)組件對(duì)象必須注冊(cè)該類事件的監(jiān)聽(tīng)器,使用addXXXListener(監(jiān)聽(tīng)器對(duì)象) 方法來(lái)注冊(cè)監(jiān)聽(tīng)器。 委托事件模型import javax.swing.*;import java.awt.event.*;class AdderFrame extends JF

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論