freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

《java程序設(shè)計(jì)之網(wǎng)絡(luò)編程》gui程序設(shè)計(jì)、applet應(yīng)用程序ppt-文庫(kù)吧

2025-09-20 04:51 本頁面


【正文】 n3)。 (North,button4)。 (Center,button5)。 (true)。 } } GridLayout ? 將整個(gè)容器劃分成 n行, m列的網(wǎng)格,平均占據(jù)容器的空間。分配空間時(shí),優(yōu)先考慮行劃分,兼顧列。當(dāng)行列不能滿足指定的數(shù)值時(shí),則按行擴(kuò)展列。例如:五個(gè)按鈕,指定分兩行兩列顯示,實(shí)際的結(jié)果如下圖所示,自動(dòng)擴(kuò)展為 3列。 ? // import .*。 import .*。 public class TestGridLayout extends WindowAdapter{ public TestGridLayout() { } public void windowClosing(WindowEvent e){ (0)。 } public static void main(String[] args) { Frame frame = new Frame(Test Grid Layout)。 (300,200)。 (new TestGridLayout())。 Button button1 = new Button(1)。 Button button2 = new Button(2)。 Button button3 = new Button(3)。 Button button4 = new Button(4)。 Button button5 = new Button(5)。 (new GridLayout(2,2,10,20))。 (button1)。 (button2)。 (button3)。 (button4)。 (button5)。 (true)。 } } CardLayout ? CardLayout布局管理器能夠幫助用戶處理兩個(gè)以至更多的成員共享同一顯示空間,它把容器分成許多層,每層的顯示空間占據(jù)整個(gè)容器的大小,但是每層只允許放置一個(gè)組件,當(dāng)然每層都可以利用Panel來實(shí)現(xiàn)復(fù)雜的用戶界面。牌布局管理器( CardLayout) 就象一副疊得整整齊齊的撲克牌一樣,有 54張牌,但是你只能看見最上面的一張牌,每一張牌就相當(dāng)于牌布局管理器中的每一層 // import .*。 import .*。 public class TestCardLayout extends WindowAdapter implements ActionListener{ private Frame frame。 private CardLayout cardLayout。 public void run() { frame = new Frame(Test Card Layout)。 (150,120)。 (this)。 Button button1 = new Button(卡片 1)。 Button button2 = new Button(卡片 2)。 Button button3 = new Button(卡片 3)。 Panel panel1 = new Panel()。 Panel panel2 = new Panel()。 Panel panel3 = new Panel()。 (button1)。 (this)。 (button2)。 (this)。 (button3)。 (this)。 cardLayout = new CardLayout()。 (cardLayout)。 (panel1,第一張 )。 (panel2,第二張 )。 (panel3,第三張 )。 (true)。 } public void windowClosing( WindowEvent e){ (0)。 } public void actionPerformed(ActionEvent e){ (frame)。 } public static void main(String[] args) { TestCardLayout myCardLayout = new TestCardLayout()。 ()。 } } GridBagLayout ? GridBagLayout生成的布局管理器也是和GridLayout一樣是使用網(wǎng)格來進(jìn)行布局管理的,所不同之處在于 GridBagLayout可以通過類GridBagConstraints 來控制容器內(nèi)各個(gè)組件的大小,每 個(gè) 組 件 都 使用 一 個(gè) GridBagConstraints 對(duì) 象 來 給 出 它 的 大小和擺放位置 ,這樣就可以按照設(shè)計(jì)者的意圖 ,改變組件的大小 ,把他們擺在設(shè)計(jì)者希望擺放的位置上 .這種靈活性是前面幾個(gè)布局管理器所不具備的。但也正是這種靈活性使得它成為 java中最有彈性也是最復(fù)雜的一種布局管理器。 GridBagLayout ? ? AWT事件 ? ? ? ? 和 ,其中( hierarchal) 模型,而( delegation) 模型。了解兩種模型的基本原理和差異將有助于我們更好的理解和掌握 ? 1. ? 在層次事件模型中,當(dāng)一個(gè)事件對(duì)象產(chǎn)生后,首先傳遞給直接相關(guān)的組件,該組件可以對(duì)事件進(jìn)行處理,也可以忽略事件不處理。如果組件沒有對(duì)事件進(jìn)行處理,則 AWT事件處理系統(tǒng)會(huì)將事件繼續(xù)向上傳遞給組件所在的容器。同樣,容器可以對(duì)事件處理,也可以忽略不處理。如果事件又被忽略,則AWT事件處理系統(tǒng)會(huì)將事件繼續(xù)上傳,以次類推,直到事件被處理,或是已傳到頂層容器。 例如,在下圖中, Button對(duì)象 (包含在一個(gè) Frame上的Panel中 )上的鼠標(biāo)點(diǎn)擊首先向 Button發(fā)送一個(gè)動(dòng)作事件。如果它沒有被 Button處理,這個(gè)事件會(huì)被送往 Panel,如果它在那兒仍然沒有被處理,這個(gè)事件會(huì)被送往 Frame。 ? 這種模型有一個(gè)顯著的優(yōu)點(diǎn):它簡(jiǎn)單,而且非常適合面向?qū)ο蟮木幊汰h(huán)境;說到底,所有的組件都繼承了,而 handleEvent()就在。 ? 然而,這種模型也存在缺點(diǎn): ? (1)事件只能由產(chǎn)生這個(gè)事件的組件或包含這個(gè)組件的容器處理。這個(gè)限制違反了面向?qū)ο缶幊痰囊粋€(gè)基本原則:功能應(yīng)該包含在最合適的類中。而最適合處理事件的類往往并不是源組件的容器層次中的成員。 ? (2)大量的 CPU周期浪費(fèi)在處理不相關(guān)的事件上。任何對(duì)于程序來說不相關(guān)或者并不重要的事件會(huì)沿容器層次一路傳播,直到最后被拋棄。不存在一種簡(jiǎn)單的方法來過濾事件。 ? (3)為了處理事件,你必須定義接收這個(gè)事件的組件的子類,或者在基容器創(chuàng)建一個(gè)龐大的 handleEvent()方法。 例子 import .*。 import .*。 public class SubclassContainer{ public static void main(String args[]){ Frame windo。 MyButton myButton。 windo =new Frame(Sub Button Test)。 myButton=new MyButton(sub button)。 (new FlowLayout())。 (myButton)。 (200,100)。 ()。 } } class windo extends Frame{ windo(String Labe){ super(Labe)。} public boolean action(Event e,Object arg){ if( instanceof Button){ (Pressed Button:+arg)。 } return true。 } } ? 1. ? 為了客服 , 入了授權(quán)事件模型 , 在這個(gè)模型中 , ? 事件處理是從一個(gè)事件源授權(quán)到一個(gè)或多個(gè)事件監(jiān)聽者,組件作為事件源可以觸發(fā)事件,通過addXXXlistener方法向組件注冊(cè)監(jiān)聽器,一個(gè)組件可以注冊(cè)多個(gè)監(jiān)聽器,如果組件觸發(fā)了相應(yīng)類型的事件,此事件被傳送給已注冊(cè)的監(jiān)聽器,事件監(jiān)聽器負(fù)責(zé)處理事件的過程。 事件是只向注冊(cè)的監(jiān)聽者報(bào)告的對(duì)象。每個(gè)事件都有一個(gè)對(duì)應(yīng)的監(jiān)聽者接口,規(guī)定哪些方法必須在適合接收那種類型的事件的類中定義。實(shí)現(xiàn)了定義那些方法的接口的類可以注冊(cè)為一個(gè)監(jiān)聽者。 案例 import .*。 public class TestButton { public static void main(String args[]) { Frame f = new Frame(Test)。 Button b = new Button(Press Me!)。 (new ButtonHandler())。 (b,Center)。 ()。 (true)。 } } ButtonHandler類是一個(gè)處理器類,事件將被委托給這個(gè)類。 import .*。 public class ButtonHandler implements ActionListener { public void actionPerformed(ActionEvent e) { (Action occurred)。 (Button39。s label is : “ + ())。 } } ? 下面我們以按鈕組件的單擊事件為例 , 說明如何編寫事件處理程序 。 ? 當(dāng)用戶單擊按鈕時(shí) , 系統(tǒng)捕獲這些操作并產(chǎn)生 ActionEvent事件 , 然 后 將 執(zhí) 行 約 定 的 ActionListener 接 口 中 的actionPerformed方法 , 而該方法的具體實(shí)現(xiàn)則委托給該方法所在的類 。 為此程序中必須: ? (1) 為按鈕注冊(cè)事件監(jiān)聽程序 ? public void addActionListener (ActionListener handler) ? 使用按鈕的 addActionListener( ) 方法 , 注 冊(cè) 一 個(gè)ActionEvent事件監(jiān)聽程序 。 Handler為按鈕委托的事件監(jiān)聽程序類對(duì)象 。 如果是本類 , 則用 this指明 , 如 ? (new ButtonHandler())。 ? (2) 實(shí)現(xiàn) ActionListener接口中 actionPerformed方法 定 義 事 件 監(jiān) 聽 程 序 類 handler, 該 類 實(shí) 現(xiàn) 了ActionListener 接口 , 重 寫 該 接 口 中 唯 一 的actionPerformed方法: public void actionPerformed( ActionEvent e) 當(dāng)單擊按鈕時(shí),系統(tǒng)產(chǎn)生 ActionEvent事件,執(zhí)行程序員為該方法編寫的事件處理代碼,并傳遞給該方法一個(gè)ActionEvent事件對(duì)象 e。 AWT事件 ? 在授權(quán)事件模型中 , 事件既是基礎(chǔ) , 又是聯(lián)系各個(gè)部分的橋梁 。 首先 , 組件作為事件源產(chǎn)生事件 , 不同類型的組件會(huì)產(chǎn)生不同類型的事件 。 事件發(fā)生后 ,事件被傳遞給對(duì)應(yīng)事件監(jiān)聽器中實(shí)現(xiàn)的事件處理方法 , 并且在事件中 , 包含著用戶傳遞給系統(tǒng)的交互信息 , 如文本框中的輸入內(nèi)容等 。 ? 不同類型的事件由不同的 Java類來表示,基類是, 所有的事件都是從它繼承而來的。 AWT為 GUI事件定義了自己的基類,,它是 EventObject的子類。AWT事件的詳細(xì)結(jié)構(gòu)圖見下圖。 AWT事件 AWT事件及監(jiān)聽器對(duì)應(yīng)表 案例 ? 本例將跟蹤鼠標(biāo)被按下時(shí),鼠標(biāo)的移動(dòng)情況 (鼠標(biāo)拖動(dòng) )。這個(gè)范例還將監(jiān)測(cè)當(dāng)鼠標(biāo)沒有按下時(shí),鼠標(biāo)的移動(dòng)情況 (鼠標(biāo)移動(dòng) )。 ? 當(dāng)鼠標(biāo)按下或沒有按下時(shí),移動(dòng)鼠標(biāo)產(chǎn)生的事件會(huì)被實(shí)現(xiàn)了 MouseMotionListener接口的類的對(duì)象檢取。這個(gè)接口要求定義兩個(gè)方法, mouseDragged()和 mouseMoved()。即使你只對(duì)鼠標(biāo)拖動(dòng)感興趣,也必須提供這兩個(gè)方法。然而,mouseMoved()的體可以是空的。 ? 要檢取其他鼠標(biāo)事件,包括鼠標(biāo)點(diǎn)擊,必須定
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1