




已閱讀5頁,還剩110頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
以GUI為例了解物件以及Event,Lecturer:曾學(xué)文,如何儘速學(xué)會(huì)現(xiàn)代程式語言,語言基礎(chǔ) 概念+語法 語法可能不太熟, 但概念務(wù)必正確 熟悉常用的Class Library中的class及相關(guān)API(Functions) 基礎(chǔ)類別:數(shù)學(xué)運(yùn)算, I/O, 例外處理, 安全管理, 多緒執(zhí)行等相關(guān)類別 圖形使用者介面(Graphical User Interface, GUI): 按鈕, 文字區(qū)塊等類別. 資料庫存取: 支援透過一致的介面存取不同型態(tài)的DBMS的相關(guān)類別. 網(wǎng)路連結(jié): 無線的連結(jié)建立, 資料傳送, 分散式運(yùn)算, 加密等類別. 學(xué)習(xí)態(tài)度 學(xué)生:初步了解各部份用法為主, 軟體工程師:以需求為導(dǎo)向.,程式設(shè)計(jì)的方法,純手工打造vs.使用API C/C+: 純手工打造: 僅使用cin/cout, print()/scanf() API and class C: string.h, math.h, ctype.h, stdib.h, Turbo C/C+中所提供的繪圖, 數(shù)學(xué)運(yùn)算函數(shù) C+: STL中的container, iterator與algorithm Visual C+/Borland C+所提供的GUI, 繒圖, 多序執(zhí) 行,等API. Java: 善用class及API,Class,如何了解一個(gè)class與相關(guān)的API class = data member +member functions 無法自己寫(或不熟), 至少試著看懂現(xiàn)成的類別規(guī)格, e.g., class Applet, Graphics 多練習(xí), 以能run為原則,JAVA使用者介面簡介,AWT(abstract window Toolkit): Java環(huán)境中, 專供程式設(shè)計(jì)GUI之用的類別集合統(tǒng)稱之(package java.awt.*) e.g., class Button, TxetField (可import java.awt.Button, java.awt.TextField,) AWT元件 基本控制元件:Button, CheckBox, Choice, List, Menu, TextField 什麼是元件(Component): 是指awt類別所生成的物件,JAVA使用者介面簡介,其他取得輸入的元件:Slider, ScollBar與TextArea 建立自己的元件: Canvas, 有圖案的按鈕 標(biāo)籤(Lable) 元件的容器:可以利用add() Method 將元件(如Button)加入類別(物件)稱之 Window, Diglog, FileDiglog, Frame Panel, Applet 其他AWT類別 Java.awt.* Dimension, Insert, Point, Rectangle, Polygon:指定表示大小與形狀的類別 Java.awt.event.*,AWT元件階層圖,GUI程式剖析,手寫版 public class Frame1 public static void main(String args) Frame frame = new Frame(“First Window Program“); frame.setLayout(new GridLayout(7, 1); frame.add(new Label(“喜好選擇(可複選):“); / Label元件 frame.add(new Checkbox(“音樂“); / Checkbox元件 frame.add(new Checkbox(“體育“); frame.add(new Checkbox(“美術(shù)“); Choice c1 = new Choice(); / Choice元件 c1.add(“Green“); c1.add(“Red“); c1.add(“Blue“); frame.add(c1); List ls1 = new List(3, false); / List元件 ls1.add(“一年級(jí)“); ls1.add(“二年級(jí)“); ls1.add(“三年級(jí)“); frame.add(ls1); frame.add(new Button(“測試按鈕“); / Button元件 frame.pack(); /調(diào)整視窗大小以容納所有元件 frame.setVisible(true); /顯示視窗 System.out.println(“結(jié)束視窗程式,請(qǐng)按下CTRL+C“); ,事件的處理過程,public class Frame1 extends Frame implements ActionListener TextField tf = new TextField(); Button b = new Button(“Hi“); public static void main(String args) Frame1 mf = new Frame1(); mf.setBounds(10,10,150,100); mf.setVisible(true); public Frame1() this.setLayout(null); tf.setBounds(30,30,80,30); b.setBounds(new Rectangle(30,80,50,30); b.addActionListener(this); add(tf); add(b); public void actionPerformed(ActionEvent e) tf.setText(“Hello“); ,更清楚顯示事件的處理過程,public class Frame1 public static void main(String args) MyFrame mf = new MyFrame(); EventSourceFrame esf = new EventSourceFrame(); mf.setBounds(10,10,150,100); esf.setBounds(180,10,100,100); esf.registerEventListener(mf); mf.setVisible(true); esf.setVisible(true); class MyFrame extends Frame implements ActionListener TextField tf = new TextField(); public MyFrame() this.setLayout(null); tf.setBounds(30,30,80,30); add(tf); public void actionPerformed(ActionEvent e) tf.setText(“Hello“); ,class EventSourceFrame extends Frame Button b = new Button(“Hi“); public void registerEventListener(ActionListener AL) b.addActionListener(AL); public EventSourceFrame() this.setLayout(null); b.setBounds(new Rectangle(30,30,50,30); this.add(b); ,使用JBuilder視覺化設(shè)計(jì)工具,public class Frame1 extends JFrame Button button1 = new Button(); TextField textField1 = new TextField(); public Frame1() try jbInit(); catch(Exception e) e.printStackTrace(); public static void main(String args) Frame1 frame1 = new Frame1(); frame1.setSize(200,100); frame1.setVisible(true); ,private void jbInit() throws Exception button1.setLabel(“button1“); button1.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(ActionEvent e) button1_actionPerformed(e); ); textField1.setText(“textField1“); this.getContentPane().add(button1, BorderLayout.NORTH); this.getContentPane().add(textField1, BorderLayout.CENTER); void button1_actionPerformed(ActionEvent e) textField1.setText(“Hi“); ,討論,用那一種好? 視覺化程式設(shè)計(jì)的迷失 (程式產(chǎn)生器, program generator),Event (事件),當(dāng)我們?cè)趯懗淌綍r(shí),多半會(huì)需要與使用者互動(dòng)或回應(yīng)其指令 Java 的awt 則採用event-drivenprogramming 的方法來達(dá)成此目的,當(dāng)某個(gè)特定的事件發(fā)生,就會(huì)驅(qū)動(dòng)程式去執(zhí)行某些特定的動(dòng)作,而可與使用者產(chǎn)生即時(shí)的互動(dòng) 三個(gè)要素 Event 意指某個(gè)特定的事件、動(dòng)作,也就是發(fā)生了什麼事件。例如:視窗關(guān)閉、滑鼠移動(dòng)。 Event Source 產(chǎn)生、觸發(fā)事件的元件。例如:Button Event Handler 負(fù)責(zé)接收Event object 並作處理的Method EventSource,產(chǎn)生了某個(gè)Event object ,而由Event Listener負(fù)責(zé)處理這個(gè)Event,Events 以物件來表示,所有的訊息都包含在java.awt.event類別庫內(nèi),所有的事件都是 EventObject的子類別,以GUI為例了解物件以及Event,以MyGUI了解Event (MyGUI.class、MyGUI.form) public MyGUI() /MyGUI.java buttonPlus.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) int varA = Integer.parseInt(textA.getText(); int varB = Integer.parseInt(textB.getText(); Integer varC = new Integer(varA+varB); textC.setText(varC.toString(); ); ,委派事件模型,2.按下按鈕產(chǎn)生一個(gè) Event物件傳給actionListner,按鈕 buttonPlus,actionListener,1. 事先有註冊(cè),actionPerformed,3. 根據(jù)物件的種類 指派給事件處理者,系統(tǒng)實(shí)際運(yùn)作狀況,當(dāng)事件發(fā)生時(shí),會(huì)有一個(gè)事件ID產(chǎn)生 GUI元件使用這個(gè)ID碼,呼叫對(duì)應(yīng)的事件方法 假如收到有ActionEvent這種物件規(guī)格 從全部已註冊(cè)的ActionListeners中,選出欲呼叫的actionPerformed() 方法,另一個(gè)版本,class MyListener implements ActionListener /介面 public void actionPerformed(ActionEvent e) /實(shí)現(xiàn)這個(gè)介面一定要 /實(shí)作actionPerformed int varA = Integer.parseInt(textA.getText(); int varB = Integer.parseInt(textB.getText(); Integer varC = new Integer(varA+varB); textC.setText(varC.toString(); public MyGUI2() / MyGUI2.java MyListener listener = new MyListener(); / buttonPlus.addActionListener(listener); ,Event的註冊(cè),Event 產(chǎn)生時(shí),只會(huì)通知有註冊(cè)過的Listener。所以對(duì)必須要先把Event註冊(cè)給要負(fù)責(zé)處理的Listner 註冊(cè)所有想要擷取的事件,而當(dāng)使用者啟動(dòng)的事件並不是我們所想要的事件時(shí),就不加以理會(huì) 程式上以XX.addXXListener 來完成註冊(cè) button.addActionListener(new ActionListener() 一個(gè)event source 可以被好幾個(gè)listener 所註冊(cè),同樣地,一個(gè)listener 也可以註冊(cè)好幾個(gè)event source 所有的Event Listener 都是一種interface,裡面只有定義這個(gè)Listener所提供的抽象method 必須去實(shí)作出此listener interface 內(nèi)所有的method,事件物件說明,ActionListener,都是EventListener的子類別,處理的方法,Button,CheckBox,Component,Your Turn,實(shí)作出MyCalc小算盤 (MyCalc.class、MyCalc.form) Form已經(jīng)建好了 完成計(jì)算機(jī)功能 代表 00 S取平方根 % 例如 50*10% 5,如何撰寫滑鼠移動(dòng)監(jiān)聽器(MouseMotionListener),需求:想攔截滑鼠事件(MouseEvent)-實(shí)作MouseListener public class Myclass implements MouseListener someObject.addMouseListener(this); public void mouseClicked(MouseEvent e) public void mouseEnetered(MouseEvent e) public void mouseExited(MouseEvent e) public void mousePressed(MouseEvent e) public void mouseReleased(MouseEvent e) ,使用轉(zhuǎn)接類別(Adapter Class)來簡化監(jiān)聽者的負(fù)擔(dān),public void MouseAdapter implements MouseListener public void mouseClicked(MouseEvent e) public void mouseEnetered(MouseEvent e) public void mouseExited(MouseEvent e) public void mousePressed(MouseEvent e) public void mouseReleased(MouseEvent e) public class MyClass extends MouseAdapter public void mouseClicked(MouseEvent e) 缺點(diǎn)?,如何撰寫按鍵監(jiān)聽器(KeyListener),implements KeyListener public interface KeyListener public void keyPressed(KeyEvent e) public void keyReleased(KeyEvent e) public void keyTyped(KeyEvent e) 使用class KeyAdapter,Example,public class Frame1 extends Frame Button button1 = new Button(); public Frame1() try jbInit(); catch(Exception e) e.printStackTrace(); public static void main(String args) Frame1 f1 = new Frame1(); f1.setBounds(10,10,400,200); f1.setVisible(true); private void jbInit() throws Exception button1.setLabel(“Hello“); button1.setBounds(new Rectangle(109, 86, 144, 48); button1.addMouseListener(new java.awt.event.MouseAdapter() public void mouseClicked(MouseEvent e) button1_mouseClicked(e); public void mousePressed(MouseEvent e) button1_mousePressed(e); );,button1.addKeyListener(new java.awt.event.KeyAdapter() public void keyPress(KeyEvent e) button1_keyPressed(e); ); this.setLayout(null); this.addKeyListener(new java.awt.event.KeyAdapter() public void keyReleased(KeyEvent e) this_keyReleased(e); public void keyTyped(KeyEvent e) this_keyTyped(e); ); this.add(button1, null); ,Example,public void button1_keyPressed(KeyEvent e) Point p = button1.getLocation(); if(e.getKeyChar()=(char)i) button1.setLocation(int)(p.getX()+50),(int)(p.getY(); else if(e.getKeyChar()=(char)j) button1.setLocation(int)(p.getX()-50),(int)(p.getY(); void this_keyReleased(KeyEvent e) Point p = button1.getLocation(); if(e.getKeyChar()=(char)i) button1.setLocation(int)(p.getX()+50),(int)(p.getY(); else if(e.getKeyChar()=(char)j) button1.setLocation(int)(p.getX()-50),(int)(p.getY(); ,void button1_mouseClicked(MouseEvent e) Point p = button1.getLocation(); button1.setLocation(int)(p.getX()+50),(int)(p.getY(); void button1_mousePressed(MouseEvent e) Point p = button1.getLocation(); button1.setLocation(int)(p.getX(),(int)(p.getY()+50); void this_keyTyped(KeyEvent e) Point p = button1.getLocation(); button1.setLocation(int)(p.getX(),(int)(p.getY()+50); ,Swing元件,Swing不是某些字的縮寫 Why Swing? java.awt.*的缺點(diǎn): 不夠用: 如表格 事件處理模式與使用的作業(yè)平臺(tái)相關(guān)性太高 (heavy weight components), 需要lightweight components來修正awt的缺點(diǎn) Swing package javax.swing.*; class JButton, JTextField, JeditorPane, JSlider, class JFrame, JApplet, class JList, JComboBox, JTable, JTree, Javax.swing.event:,Example,public class Frame1 extends JFrame JButton jButton1 = new JButton(); JTextPane jTextPane1 = new JTextPane(); public Frame1() try jbInit(); catch(Exception e) e.printStackTrace(); public static void main(String args) Frame1 frame1 = new Frame1(); frame1.setSize(200,200); frame1.setVisible(true); ,private void jbInit() throws Exception jButton1.setText(“jButton1“); jButton1.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(ActionEvent e) jButton1_actionPerformed(e); ); jTextPane1.setText(“jTextPane1“); this.getContentPane().setBackground(Color.red); this.getContentPane().add(jButton1, BorderLayout.NORTH); this.getContentPane().add(jTextPane1, BorderLayout.CENTER); void jButton1_actionPerformed(ActionEvent e) jTextPane1.setText(jTextPane1.getText()+“Hello“); ,討論,swing慢慢的取代awt, 直接學(xué)swing? swing是架在awt上面發(fā)展的, 所以awt不會(huì)消失, 只是少用而已. 儘量不要把swing和awt元件隨便混用, 尤其是當(dāng)利用視覺化設(shè)計(jì)工具時(shí).,提示,GUI元件的使用,必須靠類別庫中的類別以產(chǎn)生可以實(shí)際應(yīng)用的物件。在以下的文章中,凡是提到GUI元件時(shí),我們不嚴(yán)格區(qū)分類別、元件與物件三個(gè)名詞,並將此三個(gè)名詞交替著使用。 AWT類別庫裏的類別因?yàn)榕c原來平臺(tái)的GUI介面息息相關(guān),因此我們將之稱為重量級(jí)(heavy-weighted);Swing類別因?yàn)椴灰匈囋瓉砥脚_(tái)的GUI介面,因此我們將之稱為輕量級(jí)(light-weighted)。,使用AWT元件,AWT元件都是class component的子類別 注意大小寫 使用元件的一般規(guī)則 除了Windows類別會(huì)自動(dòng)顯示在螢?zāi)簧现?其他屬於class component的物件都必須先加入container物件之中 Frame與Diglog物件屬於最上職的元件容器, 視為不能加到container物件之中的元件,AWT共同父類別介紹,Class component 基本繒圖:paint(), update(), repaint() 某元件呼叫repaint()-AWT(系統(tǒng))回應(yīng):呼叫paint(), update() 只有Applet, Canvas, Panel需要呼叫repaint() 字型與顏色控制 setForground(), setBackground(), 可見度控制 setVisible(boolean b); 開啟或關(guān)閉元件 setEnable(boolean); 事件處理 外觀控制,AWT共同父類別介紹,Class container add(Component component) class MyFrame extends Frame implements ActionListener TextField tf = new TextField(); public MyFrame() this.setLayout(null); tf.setBounds(30,30,80,30); add(tf); ,按鈕(Button)元件 (1/8),按鈕元件的使用必須透過java.awt類別庫中的Button類別,Button類別的建構(gòu)函數(shù)與其他方法的用法如下:,按鈕(Button)元件(2/8),以下範(fàn)例程式說明按鈕元件的應(yīng)用: 範(fàn)例程式(檔名:按鈕測試1 .java) /檔名:按鈕測試1.java /說明:在小程式顯示視窗中加入一個(gè)按鈕(Button)元件 import java.applet.Applet; /引入Applet類別 import java.awt.Button; /引入Button類別 public class 按鈕測試1 extends Applet public void init() Button 按鈕=new Button(“歡迎來到Java世界“); add(按鈕); /* 以上二行可以使用下列一個(gè)敘述即可以達(dá)到同樣效果 add(new Button(“歡迎來到Java世界“); */ /方法:init() 定義區(qū)塊結(jié)束 /類別:按鈕測試1 定義區(qū)塊結(jié)束,按鈕(Button)元件(3/8),網(wǎng)頁檔案(檔名:按鈕測試1網(wǎng)頁.html) 執(zhí)行結(jié)果(命令視窗指令:appletviewer 按鈕測試1網(wǎng)頁.html),按鈕(Button)元件(4/8),在範(fàn)例程式按鈕測試1.java中,我們撰寫了一個(gè)小程式(applet),並使用init()方法,在小程式顯示視窗中安排一個(gè)按鈕(Button),而且此按鈕上有“歡迎來到Java世界“的標(biāo)記。我們可將滑鼠游標(biāo)移到此按鈕上並按下滑鼠左鍵,這會(huì)有一個(gè)按鈕被按下的感覺,但按鈕被按下後卻沒有什麼特別的狀況發(fā)生,這是因?yàn)樯形磳粹o被按下的事件(event)加以指定處理程序之故。Java的事件處理我們將留到下一章中介紹。 在第7行我們使用new運(yùn)算子產(chǎn)生一個(gè)Button類別的物件 按鈕,在第8行使用add(按鈕) 將此物件加入小程式顯示視窗中。add是Applet類別中的一個(gè)方法,用以將元件物件加入小程式顯示視窗中。,按鈕(Button)元件(5/8),Applet類別的add方法用法摘要如下:,按鈕(Button)元件(6/8),範(fàn)例程式(檔名: 按鈕測試2.java) /檔名:按鈕測試2.java /說明:在小程式顯示視窗中加入八個(gè)按鈕(Button)元件 import java.applet.Applet; /引入Applet類別 import java.awt.Button; /引入Button類別 public class 按鈕測試2 extends Applet public void init() add( new Button(“按鈕1“) ); add( new Button(“按鈕2“) );,按鈕(Button)元件(7/8),add( new Button(“按鈕3“) ); add( new Button(“按鈕4“) ); add( new Button(“按鈕5“) ); add( new Button(“按鈕6“) ); add( new Button(“按鈕7“) ); add( new Button(“按鈕8“) ); /方法:init() 定義區(qū)塊結(jié)束 /類別:按鈕測試2 定義區(qū)塊結(jié)束 網(wǎng)頁檔案(檔名:按鈕測試2網(wǎng)頁.html) 執(zhí)行結(jié)果(命令視窗指令:appletviewer 按鈕測試2網(wǎng)頁.html),按鈕(Button)元件(8/8),在範(fàn)例程式按鈕測試2.java中,我們使用8個(gè)add方法加入8個(gè)按鈕元件於小程式顯示視窗中,這8個(gè)按鈕元件的標(biāo)記分別為“按鈕1“、“按鈕2“、“按鈕8“。讀者可以移動(dòng)一下小程式的顯示視窗,你可以發(fā)現(xiàn)這些按鈕元件會(huì)依顯示視窗的大小自動(dòng)調(diào)整按鈕的擺置。,版面配置 (1/16),元件於顯示視窗中的不同位置配置稱為版面配置(layout),Java語言支援許多不同的版面配置方式,以下我們即介紹一些常用的版面配置方式。 Applet類別的setLayout方法可以指定版面配置方式,setLayout方法的參數(shù),必需是屬於版面配置管理類別的物件,Java語言提供許多版面配置管理的類別,以下我們介紹其中三種: FlowLayout(順序型)、Borderlayout(邊界型)及GridLayout(方格型)。,版面配置 (2/16),順序型FlowLayout版面配置是預(yù)設(shè)的版面配置方式,就如同範(fàn)例程式按鈕測試2.java中,當(dāng)我們並未指定版面配置方式時(shí),則自動(dòng)採用此種配置。FlowLayout由左而右,由上而下一顯示視窗可以容納的方式配置所有的元件。 類別FlowLayout屬java.awt類別庫,其建構(gòu)方法有以下三種 FlowLayout() FlowLayout(int 對(duì)齋方式) FlowLayout(int 對(duì)齊方式, int 水平間距, int 垂直間距),版面配置 (3/16),第一種建構(gòu)方法是建立一個(gè)預(yù)設(shè)的版面配置,它會(huì)將元件置中,而且每個(gè)元件之水平與垂直方向保留5個(gè)像素(pixel)的間隔,第二種方式可以指定元件的對(duì)齊方式,對(duì)齊方式的值已在FlowLayout類別中定義,有以下三種: FlowLayout.LEFT (表示向左對(duì)齊) FlowLayout.CENTER (表示向中對(duì)齊) FlowLayout.RIGHT (表示向右對(duì)齊),版面配置 (4/16),例如,若我們?cè)诔淌桨粹o測試2.java中第7行之前加入 setLayout(new FlowLayout(FlowLayout.RIGHT); 則所有的按鈕元件都會(huì)向右靠齊,其結(jié)果如下圖所示:,版面配置 (5/16),第三種的FlowLayout類別的建構(gòu)方法除了可以指定元件的對(duì)齊方式外,也可以指定元件之間水平與垂直的間距,間距以像素為計(jì)算單位。 例如,若我們?cè)诔淌桨粹o測試2.java中第7行之前加入 setLayout(new FlowLayout(FlowLayout.LEFT, 10, 20); 除了可以指定所有的按鈕元件向左靠齊外,也可以指定元件間水平間距是10像素,垂直間距是30像素,其結(jié)果如下圖所示:,版面配置 (6/16),版面配置 (7/16),類別GridLayout則可以將元件以二維格狀的方式排列,GridLayout的建構(gòu)方法如下: GridLayout() GridLayout(int 列數(shù), int 欄數(shù)) GridLayout(int 列數(shù), int 欄數(shù), int 水平間距, int 垂直間距) 第一個(gè)建構(gòu)方法是建立單一列的方格配置,而欄數(shù)則為任意,第二個(gè)建構(gòu)方法則會(huì)建立列數(shù)欄數(shù)的方格配置,注意,若元件元素超過(或不足)列數(shù)欄數(shù)則方格配置會(huì)符合列數(shù)的要求,而欄位數(shù)則會(huì)自行調(diào)整而不依照欄數(shù)所指定之值。另外,列數(shù)及欄數(shù)之值皆可設(shè)為0(但非同時(shí)),此二參數(shù)設(shè)為0時(shí)表示列數(shù)或欄數(shù)可隨元件之多寡自動(dòng)調(diào)整。,版面配置 (8/16),例如,在按鈕測試3.java中的第10行,我們使用敘述 setLayout(new GridLayout(4,2); 來將所有的按鈕以4列2欄的格狀來安排版面配置。 範(fàn)例程式(檔名: 按鈕測試3.java) /檔名:按鈕測試3.java /說明:在小程式顯示視窗中以4列2欄的格狀加入八個(gè)按鈕(Button)元件 import java.applet.Applet; /引入Applet類別 import java.awt.Button; /引入Button類別 import java.awt.GridLayout; /引入GridLayout類別,版面配置 (9/16),public class 按鈕測試3 extends Applet public void init() setLayout(new GridLayout(4,2) ); add( new Button(“按鈕1“) ); add( new Button(“按鈕2“) ); add( new Button(“按鈕3“) ); add( new Button(“按鈕4“) ); add( new Button(“按鈕5“) ); add( new Button(“按鈕6“) ); add( new Button(“按鈕7“) ); add( new Button(“按鈕8“) ); /方法:init() 定義區(qū)塊結(jié)束 /類別:按鈕測試3定義區(qū)塊結(jié)束,版面配置 (10/16),網(wǎng)頁檔案(檔名:按鈕測試3網(wǎng)頁.html) 執(zhí)行結(jié)果(命令視窗指令:appletviewer 按鈕測試3網(wǎng)頁.html),版面配置 (11/16),GridLayout類別的第三個(gè)建構(gòu)方法則可以指定元件間之水平間距與垂直間距,例如 setLayout(new GridLayout(4,2,10,5); 可以指定4列2欄的元件配置,而且元件間水平間隔10像素而其垂直間隔5像素。 類別BorderLayout則可以指定元件在版面的四週邊界及中央的版面配置,顯示視窗的四週的邊界分別稱為North、South、East及West,而中央則稱為Center,BorderLayout具有以下二個(gè)建構(gòu)方法: BorderLayout() BorderLayout(int 水平間距, int 垂直間距),版面配置 (12/16),第一個(gè)建構(gòu)方法可以建立預(yù)設(shè)的邊界版面配置,而第二個(gè)建構(gòu)方法可以指定元件間之水平間距及垂直間距。在使用Borderlayout時(shí),我們配合使用二個(gè)參數(shù)的add方法來將元素加入小程式顯示視窗中,其用法為 add(方向字串, 元件); 其中方向字串可能之值為“North“、“South“、“East“、“West“及“Center“(請(qǐng)注意大小寫)。我們使用以下的範(fàn)例說明BorderLayout類別的使用。,版面配置 (13/16),範(fàn)例程式(檔名: 按鈕測試4.java) /檔名:按鈕測試4.java /說明:在小程式顯示視窗中以邊界配置方式加入五個(gè)按鈕(Button)元件 import java.applet.Applet; /引入Applet類別 import java.awt.Button; /引入Button類別 import java.awt.BorderLayout; /引入BorderLayout類別 public class 按鈕測試4 extends Applet public void init() setLayout(new BorderLayout() ); add(“East“,new Button(“東按鈕“); add(“South“,new Button(“南按鈕“);,版面配置 (14/16),add(“West“,new Button(“西按鈕“); add(“North“,new Button(“北按鈕“); add(“Center“,new Button(“中按鈕“); /方法:init() 定義區(qū)塊結(jié)束 /類別:按鈕測試4定義區(qū)塊結(jié)束 網(wǎng)頁檔案(檔名:按鈕測試4網(wǎng)頁.html) 執(zhí)行結(jié)果(命令視窗指令:appletviewer 按鈕測試4網(wǎng)頁.html),版面配置 (15/16),在範(fàn)例程式按鈕測試4.java中,我們?cè)诘?行以setLayout(new BorderLayout();敘述指定版面配置為邊界模式,而在第9行,以 add(“East“,new Button(“東按鈕“); 將一個(gè)標(biāo)記為“東按鈕“的按鈕元件加入版面的東方(“East“),同樣的,第10至第13行則使用相同的方式,使用add()方法將其他的4個(gè)按鈕分別加入版面的南方、西方、北方及中央。 另外,若將第8行改為 setLayout(new BorderLayout(5,15); 則可在各元件間指出5像素的水平間距及15像素的垂直間距,其執(zhí)行情形如下所示:,版面配置 (16/16),標(biāo)記(Label)元件 (1/5),標(biāo)記(Label)元件主要用來顯示單行的文字訊息,一般將之用來顯示說明文字。Label類別的建構(gòu)方法及常用的方法摘要說明如下: 標(biāo)記元件的使用必須透過java.awt類別庫中的Label類別,Label類別的建構(gòu)函數(shù)與其他方法的用法如下:,標(biāo)記(Label)元件 (2/5),標(biāo)記(Label)元件 (3/5),以下是類別Label所屬方法的綜合應(yīng)用程式: 範(fàn)例程式(檔名: 標(biāo)記測試.java) /檔名:標(biāo)記測試.java /說明:各種標(biāo)記方法之綜合應(yīng)用 import java.applet.Applet; /引入Applet類別 import java.awt.Label; /引入Label類別 import java.awt.GridLayout; /引入GridLayout類別 public class 標(biāo)記測試 extends Applet public void init() Label 標(biāo)記1=new Label();,標(biāo)記(Label)元件 (4/5),Label 標(biāo)記2=new Label(“向中靠“); Label 標(biāo)記3=new Label(“向右靠“,2); /2可以使用Label.RIGHT取代 標(biāo)記1.setText(“向左靠“); 標(biāo)記1.setAlignment(0); /0可以使用Label.LEFT取代 標(biāo)記2.setAlignment(1); /1可以使用Label.CENTER取代 setLayout(new GridLayout(3,1); add(標(biāo)記1); add(標(biāo)記2); add(標(biāo)記3); /方法:init() 定義區(qū)塊結(jié)束 /類別:標(biāo)記測試 定義區(qū)塊結(jié)束,標(biāo)記(Label)元件 (5/5),網(wǎng)頁檔案(檔名:標(biāo)記測試網(wǎng)頁.html) 執(zhí)行結(jié)果(命令視窗指令:appletviewer 標(biāo)記測試網(wǎng)頁.html),選項(xiàng)(Checkbox)元件 (1/6),選項(xiàng)(Checkbox)元件可用來列出選項(xiàng)並由使用者決定該選項(xiàng)是否被選取(設(shè)為true)。選項(xiàng)元件也可以設(shè)定為屬於同一個(gè)選項(xiàng)群(CheckboxGroup),被設(shè)定為同一個(gè)選項(xiàng)群的選項(xiàng)中同時(shí)只能有一個(gè)被選取,這類似多選一的單選動(dòng)作,若選項(xiàng)未被設(shè)為屬於任何選項(xiàng)群,則他們可任意獨(dú)立的被選取。 Checkbox類別的建構(gòu)方法及其常用的方法摘要描述如下:,選項(xiàng)(Checkbox)元件 (2/6),選項(xiàng)(Checkbox)元件 (3/6),選項(xiàng)(Checkbox)元件 (4/6),以下是類別Checkbox所屬方法的綜合應(yīng)用範(fàn)例程式: 範(fàn)例程式(檔名: 選項(xiàng)測試.java) public class 選項(xiàng)測試 extends Applet public void init() Label 標(biāo)記=new Label(“請(qǐng)選擇以下一項(xiàng)“); CheckboxGroup 選項(xiàng)群=new CheckboxGroup(); Checkbox 選項(xiàng)1=new Checkbox(); Checkbox 選項(xiàng)2=new Checkbox(“第二項(xiàng)“); Checkbox 選項(xiàng)3=new Checkbox(“第三項(xiàng)“,false); Checkbox 選項(xiàng)4=new Checkbox(“第四項(xiàng)“,false,選項(xiàng)群);,選項(xiàng)(Checkbox)元件 (5/6),Checkbox 選項(xiàng)5=new Checkbox(“第五項(xiàng)“,選項(xiàng)群,false); 選項(xiàng)1.setLabel(“第一項(xiàng)“); 選項(xiàng)1.setCheckboxGroup(選項(xiàng)群); 選項(xiàng)2.setCheckboxGroup(選項(xiàng)群); 選項(xiàng)3.setCheckboxGroup(選項(xiàng)群); 選項(xiàng)1.setState(true); 選項(xiàng)2.setState(false); setLayout(new GridLayout(6,1); add(標(biāo)記); add(選項(xiàng)1);,選項(xiàng)(Checkbox)元件 (6/6),add(選項(xiàng)2); add(選項(xiàng)3); add(選項(xiàng)4); add(選項(xiàng)5); /方法:init() 定義區(qū)塊結(jié)束 /類別:選項(xiàng)測試 定義區(qū)塊結(jié)束 網(wǎng)頁檔案(檔名:選項(xiàng)測試網(wǎng)頁.html) 執(zhí)行結(jié)果(命令視窗指令:appletviewer選項(xiàng)測試網(wǎng)頁.html),選單(Choice)元件 (1/6),選單(Choice)元件與選項(xiàng)(Checkbox)元件類似,都是可以用來指出元件選取狀態(tài),不同的是Choice元件是使用下拉式清單的方式來列出所有的選項(xiàng),而Checkbox是以一項(xiàng)一項(xiàng)列出的方式來列出所有的選項(xiàng)。 Choice類別的建構(gòu)方法及其他常用的方法摘要如下:,選單(Choice)元件 (2/6),選單(Choice)元件 (3/6),選單(Choice)元件 (4/6),以下是類別Choice所屬方法的綜合應(yīng)用程式: 範(fàn)例程式(檔名
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 教學(xué)流程設(shè)計(jì)規(guī)范
- 網(wǎng)絡(luò)批發(fā)商風(fēng)險(xiǎn)管理及應(yīng)對(duì)策略考核試卷
- 禽類屠宰行業(yè)發(fā)展趨勢(shì)與挑戰(zhàn)考核試卷
- 虛擬時(shí)尚設(shè)計(jì)平臺(tái)考核試卷
- 2023中國彩妝洞察報(bào)告
- 2025年過熱蒸汽干燥設(shè)備項(xiàng)目建議書
- 中醫(yī)外科學(xué)多媒體課件-皮膚病疾患
- 2024年全球及中國別墅裝修服務(wù)行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報(bào)告
- 玖舍文化課件
- 2019-2025年安全員之B證(項(xiàng)目負(fù)責(zé)人)題庫與答案
- 碳酸乙酯(碳酸二乙酯)的理化性質(zhì)及危險(xiǎn)特性表
- 模具保養(yǎng)記錄表
- 三年級(jí)語文下冊(cè)第七單元(集體備課)教材分析說課稿課件
- SAP零售行業(yè)解決方案
- 四川大學(xué)年《系統(tǒng)解剖學(xué)》期末試題及答案
- 博德之門BG+TOSC細(xì)節(jié)攻略
- 西南交通大學(xué)《行車組織》區(qū)段站工作組織課程設(shè)計(jì)(附大圖)
- 正畸沙龍專用宣教PPT-口腔正畸正當(dāng)時(shí)
- 阿帕套裝汽車改燈燈光升級(jí)ppt課件
- 年產(chǎn)12.5萬噸鹽酸工程二段吸收工序工藝設(shè)計(jì)
- 衛(wèi)生監(jiān)督稽查規(guī)范
評(píng)論
0/150
提交評(píng)論