Java——GUI(圖形用戶界面設計)

事件處理:事件:用戶的一個操作(例如:點擊一下鼠標,或者敲擊一下鍵盤)事件源:被操作的組件(例如:在一個窗體中的一個按鈕,那個按鈕就屬于被操作的組件,按鈕就是事件源)監聽器:一個自定義的對象,實現了監聽接口,包含事件處理方式,把監聽器添加在事件源上,當事件發生的時候,虛擬機就會自動調用監聽器中的事件處理方法
package com.yy.gui;
//GUI功能簡單運用
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;public class Demo1_Frame {public static void main(String[] args) {Frame f = new Frame("琪老師好!");f.setSize(400,600);                         //設置窗體大小(寬和高)f.setLocation(500, 50);                     //設置窗體初始的位置f.setIconImage(Toolkit.getDefaultToolkit().createImage("beyond.jpg"));Button b1 = new Button("我就不~不滾咋滴!!!"); //設置按鈕1,按鈕名稱:我就不~不滾咋滴!!!Button b2 = new Button("略略略");              //設置按鈕2,按鈕名稱:略略略f.add(b1);f.add(b2);f.setLayout(new FlowLayout());              //設置布局管理器//f.addWindowListener(new MyWindowAdapter());//WindowListenter是一個接口,不能直接new一個接口,但是我們可以傳這個接口的子類對象/*//窗體監聽//優化2,匿名內部類//public void windowClosing(WindowEvent e)窗口正處在關閉過程中時調用。此時可重寫關閉操作f.addWindowListener(new WindowAdapter(){    //WindowListener是一個接口,找個類去實現這個接口,重寫接口中的所有方法,然后去調用自己想要的方法,繼承WindowAdapter這個類//不能new接口,但是可以new這個接口的子類對象public void windowClosing(WindowEvent e){   //重寫所需要的方法System.exit(0);}});//new WindowAdapter(){}//new      類                 (){}  表示去繼承這個類*//*//鼠標監聽,鼠標點擊進行指定操作//public void mouseClicked(MouseEvent e)鼠標按鍵在組件上單擊(按下并釋放)時調用//public void mouseReleased(MouseEvent e)鼠標按鈕在組件上釋放時調用b1.addMouseListener(new MouseAdapter(){     //匿名內部類,添加一個鼠標監聽,鼠標適配器public void mouseClicked(MouseEvent e){//單擊ClickedSystem.exit(0);                     //退出}public void mouseReleased(MouseEvent e){//釋放Released    System.exit(0);}});*/  /*//鍵盤監聽以及鍵盤事件(滿足某種條件就去執行對應的方法)//public int getKeyCode()返回與此事件中的鍵關聯的整數 keyCode//返回:   鍵盤上實際鍵的整數代碼b1.addKeyListener(new KeyAdapter(){         //匿名內部類,添加一個鍵盤監聽器public void keyReleased(KeyEvent e){    //KeyEvent  鍵盤事件//System.out.println(e.getKeyCode());   //打印鍵盤上的鍵所對應的整數值第一種形式if(e.getKeyCode() == 32){           //32對應的鍵是空格鍵System.exit(0);                 //如果是空格鍵,退出程序}//第二種形式 if(e.getKeyCode() == KeyEvent.VK_SPACE){        //類名.  去調用這個靜態常量就可以//KeyEvent.VK_SPACE//類名             .         VK_SPACE代表空格   VK_ENTER代表回車  ...System.exit(0);                 //退出程序}}});                                         //KeyListener也是一個接口,*//*//動作監聽b2.addActionListener(new ActionListener() {         //添加動作監聽,應用場景就是暫停視頻和播放視頻@Overridepublic void actionPerformed(ActionEvent e) {    //無論是敲空格鍵還是鼠標左鍵單擊,都會退出java虛擬機,因為空格鍵還是鼠標左鍵單擊是系統默認的System.exit(0);}});*/f.setVisible(true);                         //設置窗體可見}}//WindowAdapter:適配器,也是一個抽象類,定義為抽象類是為了,不想讓你去創建這個類的對象,因為,就算創建了這個類的對象,調用這個類的空方法也是沒有任何意義的。
//該抽象類實現了WindowListener這個接口,并且重寫了WindowListener這個接口中的所有的出抽象方法
//方便在于:如果以后你想用WindowListener這個接口,只需要繼承WindowAdapter這個類就可以了,想用那個方法,就重寫那個方法即可
//WindowAdapter該類中的方法都是空方法;
//目的在于:就是為了提供給子類去使用這些方法,而不是自己用的,然后,WindowAdapter這個類把這些方法都給重寫了,當子類去使用的時候,想用哪個方法,就直接重寫哪個方法即可/*class MyWindowListener implements WindowListener{     //創建WindowListener這個抽象類的子類對象
//如果一個抽象類中,沒有定義任何的抽象方法,那這個抽象類的作用只有一個,不允許其他的類來創建這個抽象類的對象@Overridepublic void windowOpened(WindowEvent e) {           //重寫WindowListener這個接口里面的所有方法}@Overridepublic void windowClosing(WindowEvent e) {System.out.println("Closing");System.exit(0);}@Overridepublic void windowClosed(WindowEvent e) {System.out.println("Closed");}@Overridepublic void windowIconified(WindowEvent e) {}@Overridepublic void windowDeiconified(WindowEvent e) {}@Overridepublic void windowActivated(WindowEvent e) {}@Overridepublic void windowDeactivated(WindowEvent e) {}}
*//*優化1 class MyWindowAdapter extends WindowAdapter{               //創建一個類MyWindowAdapter去繼承WindowAdapter(適配器)這個抽象類
//該抽象類實現了WindowListener這個接口,并且重寫了WindowListener這個接口中的所有的出抽象方法,方便在于:如果以后你想用WindowListener這個接口,只需要繼承WindowAdapter這個類就可以了,想用那個方法,就重寫那個方法即可
//這里就不會去強制重寫任何方法,用哪個重寫哪個方法就可以 public void WindowClosing(WindowEvent e){               System.exit(0);}
}
*/
 * A:什么是適配器*      在使用監聽器的時候,需要定義一個類事件監聽器接口*      通常接口中有多個方法,而程序中不一定所有的都能用到,但有必須重寫所有的方法,這很繁瑣*      適配器簡化了這些操作,我們定義監聽器時只要繼承適配器,然后重寫需要的方法即可* B:適配器原理(Adapter就是一個適配器)*      適配器就是一個類,實現了監聽器接口,所有的抽象方法都重寫了,但是方法全是空的*      適配器類需要定義成抽象的,因為創建該類對象,調用空方法都是沒有意義的*      目的就是為了簡化程序員的操作,定義監聽器時繼承適配器,只重寫需要的方法就可以了
 * 適配器設計模式* 例如:魯智深(花和尚)。是個和尚(假如,和尚每天要做的事情為打坐、念經、撞鐘、習武),現在有一個  和尚  接口,該接口有打坐、念經、撞鐘、習武這四個方法,* 但是魯智深只喜歡習武,所以,讓魯智深去實現  和尚  這個接口是不合適的* 首先有個接口  和尚 ,和尚 這個接口里面有一些方法打坐、念經、撞鐘、習武* 而魯智深只喜歡習武,所以,這時候,我們就可以創建一個中間類  天罡星 ,這個  天罡星  這個類實現了這個   和尚  接口,實現  和尚  這個接口之后,重寫了  和尚  這個接口里面的所有抽象方法* 天罡星 這個類重寫了  和尚  里面的所有抽象方法,這些抽象方法都是空的,為了防止別人拿這個  天罡星 這個類去創建對象,于是就把  天罡星 這個類給聲明成抽象類* 把  天罡星  這個類聲明成抽象類的原因:不想讓其他類去創建本類對象,因為創建也是沒有意義的,天罡星 這個類里面的方法都是空的,這里的  天罡星 這個類就起到一個過渡的作用* 然后,創建一個    魯智深   類,讓  魯智深  這個類去繼承  天罡星  這個抽象類,于是,魯智深 這個類 想重寫哪個方法就重寫哪個方法就行了,由于魯智深只想習武,于是只需要重寫  習武  這個方法就行了* 然后,重寫 習武 這個方法,輸出倒拔垂楊柳,拳打鎮關西,大鬧野豬林...即可* 這時候,唐三藏來了,而他只喜歡打坐,念經,撞鐘,但是他不喜歡習武,于是,就可以定義一個  唐三藏  類去繼承  天罡星  這個抽象類  然后重寫他需要的方法即可;

代碼如下

package com.yy.適配器;public class Demo1_Adapter {public static void main(String[] args) {魯智深  yy = new 魯智深();            //創建  魯智深  這個類對象唐三藏 wsq = new 唐三藏();            //創建  唐三藏  這個類對象yy.習武();                           //調用  魯智深  這個類中的  習武  方法wsq.念經();                          //調用  唐三藏  這個類中的  念經  方法wsq.打坐();                          //調用  唐三藏  這個類中的  打坐  方法wsq.撞鐘();                          //調用  唐三藏  這個類中的  撞鐘  方法}}interface 和尚{                               //定義一個 和尚  接口public void 打坐();                       //這些是  和尚 這個接口的所有抽象方法public void 念經();public void 撞鐘();public void 習武();
}//適配器設計模式
abstract class 天罡星 implements 和尚{       //聲明成抽象類的原因是:不想讓其他類去創建本類對象,因為創建也是沒有意義的,方法都是空的
//這里的  天罡星  這個類就充當著適配器的作用,作為中間類@Overridepublic void 打坐() {      //重寫  和尚 這個接口里面的所有抽象方法,但是都是空方法,調用空方法是沒有任何意義的}@Overridepublic void 念經() {}@Overridepublic void 撞鐘() {}@Overridepublic void 習武() {}}
class 魯智深 extends 天罡星{      //魯智深  這個類去繼承   天罡星  這個抽象類public void 習武() {System.out.println("倒拔垂楊柳");System.out.println("拳打鎮關西");System.out.println("大鬧野豬林");System.out.println("......");}//這里并沒有重寫toString方法,而是采用   類名.    的方法調用類中的每個方法
}
class 唐三藏 extends 天罡星{public void 打坐(){System.out.println("我佛慈悲");}public void 念經() {System.out.println("阿彌陀佛");}public void 撞鐘() {System.out.println("duangduangduang");}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/379869.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/379869.shtml
英文地址,請注明出處:http://en.pswp.cn/news/379869.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python安全攻防---信息收集---IP查詢

IP查詢是通過當前所獲得的URL去查詢對應IP地址的過程,可應用Socket庫函數中的gethostbyname()獲取域名所對用的IP值 程序如下: # -*- coding:utf-8 -*- IP查詢import socket ip socket.gethostbyname(www.baidu.com) print(ip)運行結果: …

智能課程表Android版-學年學期星期的實現

上次我們實現了日期和時間的動態顯示,這次我們來實現學年,學期,周次的顯示,如圖: 首先是學年學期的顯示: Calendar cCalendar.getInstance(); int yearc.get(Calendar.YEAR); int monthc.get(Calendar.MONTH)1;//Calen…

感染linux腳本程序技術

前言 ---- 本文來源于29A病毒雜志,其上對linux shell病毒技術有了一個綜合的闡述,我不想翻譯它,我以它的那篇為模板 寫了這篇中文的文章,里面的代碼我都做了調試. 對于shell編程的程序員來說所謂的shell病毒技術其實根本就是小牛一毛,這點在大家看完本文后就會有所體會 但,簡單…

Java——設計模式(簡單工廠模式)

* A:簡單工廠模式概述* 簡單工廠模式又叫靜態工廠方法模式,它定義了一個具體的工廠類負責創建一些類的實例* B:優點* 客戶端不需要再負責對象的創建,從而明確了各個類的職責* 簡單來說,客戶端你只需要用就可以了,就…

Java ObjectOutputStream writeFloat()方法與示例

ObjectOutputStream類writeFloat()方法 (ObjectOutputStream Class writeFloat() method) writeFloat() method is available in java.io package. 在java.io包中提供了writeFloat()方法 。 writeFloat() method is used to write the given 4 bytes of a float value. writeFl…

python安全攻防---信息收集---whois查詢

whois是用來查詢域名的IP以及所有者信息的傳輸協議。簡單地說,whois就是一個數據庫,用來查詢域名是否以及被注冊,以及注冊域名的詳細信息(如域名所有人、域名注冊商等)。 使用whois查詢,首先通過pip安裝py…

百度面試題:從輸入url到顯示網頁,后臺發生了什么?

參考http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ http://www.cnblogs.com/wenanry/archive/2010/02/25/1673368.html 原文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ 作為一個軟件開發者,你一定會…

VS2005無法啟動修復辦法

c:\Program Files\Microsoft Visual Studio 8\Common7\IDE>devenv /ResetSkipPkgs 轉載于:https://www.cnblogs.com/doc/archive/2008/10/10/1307887.html

Java——設計模式(工廠方法模式)

* A:工廠方法模式概述* 工廠方法模式中抽象工廠類負責定義創建對象的接口,具體對象的創建工作由繼承抽象工廠的具體類實現。* 簡單來說:先定義一個工廠,工廠里面有些方法,這些方法就是用來創建動物的,然后有很多子工…

python安全攻防---爬蟲基礎---get和post提交數據

get提交數據1 get提交的數據就附在提交給服務器的url之后,以?開頭參數之間以&隔開,例如/admin/user/123456.aspx?name123&id123 案例:寫個腳本,在sogou自動搜索周杰倫,并將搜索頁面的數據獲取 程…

JavaMail中解決中文附件名亂碼的問題

網上有很多類似的解決方案,很多是使用 if ((fileName ! null) && (fileName.toLowerCase().indexOf("gb2312") ! -1)){ fileName MimeUtility.decodeText(fileName); } 來解決,但對應gbk編碼的附件名,這里仍不能正確處…

Java ObjectOutputStream writeBytes()方法與示例

ObjectOutputStream類writeBytes()方法 (ObjectOutputStream Class writeBytes() method) writeBytes() method is available in java.io package. writeBytes()方法在java.io包中可用。 writeBytes() method is used to write the given string as a sequence of bytes. write…

如何集中注意力(3)

如何集中注意力(3) [ 2008-10-20 10:15 ]by Glen Stansberry of LifeDev (feed). 集中注意力并不是一件很容易的事情,尤其是處在當前這個充滿誘惑和紛擾的世界里。下面是繼續告訴大家一些有幫助的方法: 7. Plan your day to the T…

Java——網絡編程三要素

* A:計算機網絡* 是指將地理位置不同的具有獨立功能的多臺計算機及其外部設備,通過通信線路連接起來,在網絡操作系統、網絡管理軟件及網絡通信協議的管理和協調下,實現資源共享和信息傳遞的計算機系統。* 其實我們這些網,之所以能…

python安全攻防---爬蟲基礎--re解析數據

0x01 re基礎 使用re模塊,必須先導入re模塊 import refindall():匹配所有符合正則的內容,返回的是一個列表 import restr "我的電話:10086,女朋友電話:11011" list re.findall(\d,str) print…

BSP for good 3d engine

1.open sourcehttp://irrlicht.sourceforge.net/downloads/ 2.不錯的小材質http://www.permadi.com/tutorial/webgraph/index.html 3.java bsp display(demo):http://www.symbolcraft.com/graphics/bsp/index.php http://www.faqs.org/faqs/graphics/bsptree-faq/ 4.a bps ill…

Java InputStreamReader getEncoding()方法及示例

InputStreamReader類的getEncoding()方法 (InputStreamReader Class getEncoding() method) getEncoding() method is available in java.io package. getEncoding()方法在java.io包中可用。 getEncoding() method is used to get the encoding name avail for this InputStrea…

python安全攻防---爬蟲基礎---BeautifulSoup解析

0x01 基礎 使用bs4首先要安裝,安裝后導入 import bs4bs對象有兩個方法,一個是find,另一個是find_all find(標簽名,屬性值):只返回一個,返回也是bs對象,可以繼續用find…

DataRabbit 3.1發布,完全支持SqlServer2005/2008

增加了對SqlServer2005/2008的新的數據類型的支持,如uniqueidentifier、time、sql_variant等。另外,EntityCreator也一起更新--不再強迫為Entity生成ToString()方法,使用者可以主動選擇是否要生成。 DataRabbit 3.1 下…

Java——Socket通信原理

* Socket通信原理圖解* A:Socket(中文翻譯為:電源插座)套接字概述* 網絡上具有唯一標識的IP地址和端口號組合在一起才能構成唯一能識別的標識套接字* 通信的兩端都有Socket(兩端都是電源插座,中間是啥?不就是電線啦,電…