版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第9章 圖形用戶界面 29.1、Swing組件 3圖形用戶界面編程概述 兩個用于圖形用戶界面編程的包:AWT和Swing 圖形界面上顯示的各種對象都稱為GUI控件組件:構(gòu)成圖形界面的基本元素,不能容納其他組件,如按鈕、文本框等 容器:用來容納其他組件的區(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(“我愛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(“我愛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)造方法說明JTextField( )創(chuàng)建一個文本框JTextField(int n)創(chuàng)建一個列寬為n的空文本框JTextField(String s)創(chuàng)建一個文本框,并顯示字符串sJTextField(String s,int n)創(chuàng)建一個文本框,并以指定的字寬n顯示字符串s方法說明void setFont(Font f)設(shè)置字體void setHorizontalAlignment(in
6、t alig)設(shè)置文本的水平對齊方式(LEFT、CENTER、RIGHT)void addActionListener(ActionListener e)添加指定的動作事件監(jiān)聽程序9構(gòu)造方法說明JTextArea ()創(chuàng)建一個文本區(qū)JTextArea (int n,int m)創(chuàng)建一個具有n行m列的文本區(qū)JTextArea(String s)創(chuàng)建一文本區(qū),并顯示字符串sJTextArea(String s,int n,int m)創(chuàng)建一個文本區(qū),并以指定的行數(shù)n和列數(shù)m顯示字符串s方法說明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)建一個布局管理器對象將布局管理器對象指定為容器的布局管理者五種布局管理器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)容器的大小變化時,組件的大小不變,但是相對位置會發(fā)生變化。構(gòu)造方法主要下面幾種: FlowLayout(FlowLayout.RIGHT,20,40); FlowLayout(FlowLayout.LEFT);FlowLayout(); /缺省的對齊方式居中對齊,橫向間隔和
12、縱向間隔都是缺省值5個象素15BorderLayout把容器分成5個區(qū)域:North,South,East,West和Center,每個區(qū)域只能放置一個組件。 上北、下南、左西、右東、中當(dāng)容器的大小變化時,按鈕相應(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)格單元,每個單元放一個組件,網(wǎng)格單元大小相同指定行數(shù)和列數(shù)Gri
15、dLayout類的構(gòu)造函數(shù)public GridLayout ( ) 生成一個行數(shù)為1的布局管理器對象。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 = 北京,上海,廣州,杭州,南京,廈門,西安,無錫,青島;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文本行一個單行的文
17、本域,可接受從鍵盤輸入的信息AWT用TextField表示,Swing 用JTextField表示TextField類常用的方法:1. public TextField( ):3個字符的空文本行。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ū)一個多行的文本域,內(nèi)容超出顯示范圍
18、時,具有滾動顯示的功能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)用戶對界面操作的描述鼠標(biāo)移動、鼠標(biāo)點擊、鍵盤鍵入等事件類ActionEvent:單擊按鈕;文本域中按回車鍵KeyEvent:按鍵時觸發(fā)ItemEvent:列表類,當(dāng)選項狀態(tài)發(fā)生變化時每個組件能產(chǎn)生的事件是確定的。事件處理模型事件源產(chǎn)生事件事件送給監(jiān)聽器監(jiān)聽器處理事件(執(zhí)行監(jiān)聽器的某個方法)如何實現(xiàn)事件處理定義監(jiān)聽器類對于事件XXXEvent, 要想接收并處理這類事件,必須定義相應(yīng)的事件監(jiān)聽器類,該類需要實現(xiàn)與該事件相對應(yīng)的接口XXXListener事件監(jiān)聽注冊(委托)組件對象必須注冊該類事件的監(jiān)聽器,使用addXXXListener(監(jiān)聽器對象) 方法來注冊監(jiān)聽器。 委托事件模型import javax.swing.*;import java.awt.event.*;class AdderFrame extends JF
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)購網(wǎng)站課程設(shè)計
- 智慧港口課程設(shè)計圖
- 網(wǎng)評員網(wǎng)絡(luò)培訓(xùn)課程設(shè)計
- 二零二五年度個人出租房租賃合同范本27篇
- 二零二五年度XX企業(yè)職工XX住房公積金借款合同2篇
- 煤焦油濕法脫硫課程設(shè)計
- 溫度傳感器報警課程設(shè)計
- 早戀心理課程設(shè)計
- 2025年度軌道交通設(shè)備安裝與安全檢驗合同3篇
- 2025版綠色環(huán)保住宅交易合同3篇
- 發(fā)動機(jī)無法啟動的故障診斷
- 醫(yī)療機(jī)構(gòu)醫(yī)院臨床微生物學(xué)檢驗標(biāo)本的采集和轉(zhuǎn)運(yùn)指南
- 國開電大《員工招聘與配置》形考冊第一次形考答案
- ODM合作方案教學(xué)課件
- 醫(yī)藥公司知識產(chǎn)權(quán)
- GB/T 1196-2023重熔用鋁錠
- Revit軟件學(xué)習(xí)實習(xí)報告
- 2024版國開電大本科《行政領(lǐng)導(dǎo)學(xué)》在線形考(形考任務(wù)一至四)試題及答案
- 風(fēng)電教育培訓(xùn)體系建設(shè)
- 《機(jī)械基礎(chǔ)(第七版)》期末考試復(fù)習(xí)題庫(含答案)
- 長龍山抽水蓄能電站500kv開關(guān)站工程環(huán)境影響報告書
評論
0/150
提交評論