国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

菜鳥(niǎo)初學(xué)Java的備忘錄(十)

瀏覽:8日期:2024-06-25 16:39:46
內(nèi)容: 回顧一下昨天所學(xué)習(xí)的基于連接池的Socket,其原理中的要點(diǎn)如下:服務(wù)器開(kāi)放有限個(gè)PooledConnectionHandler線程用來(lái)處理連接;客戶的連接請(qǐng)求均加入到Pool連接池中(實(shí)際是linklist()對(duì)象);PooledConnectionHandler一旦發(fā)現(xiàn)連接池中有連接請(qǐng)求,就立即著手處理;大家都使用同一個(gè)Pool(所以它是靜態(tài)變量)目前為止,有關(guān)Java程序設(shè)計(jì)的一些基本內(nèi)容都已經(jīng)學(xué)習(xí)的差不多了.現(xiàn)在是學(xué)以致用的時(shí)候了.學(xué)習(xí)任何語(yǔ)言,要想真正的談得上入門(mén),都應(yīng)該以一個(gè)實(shí)際的編程經(jīng)驗(yàn)為標(biāo)志的,我想.以前用C++編過(guò)一個(gè)俄羅斯方塊,覺(jué)得這個(gè)游戲的程序設(shè)計(jì)挺能體現(xiàn)面向?qū)ο蟮乃枷氲?Java和C++有很多共同點(diǎn),依葫蘆畫(huà)瓢誰(shuí)都會(huì),那么就重新實(shí)現(xiàn)一遍吧,反正也忘得差不多了,權(quán)當(dāng)溫故知新.另外,既然花了那么多時(shí)間來(lái)研究Socket,那就索性編出一個(gè)網(wǎng)絡(luò)版的來(lái).俄羅斯方塊的程序需要圖形用戶界面(GUI),而前面編的Java程序中,只有Applet程序?qū)崿F(xiàn)了圖形界面,但那是在AppletViewer或者瀏覽器的幫助下完成的.用Java來(lái)實(shí)現(xiàn)圖形用戶界面,我們需要用到Frame類(lèi).Frame類(lèi)是窗口類(lèi)(windows)類(lèi)的子類(lèi),是圖形用戶界面的基本窗口.閱讀下面一個(gè)小程序并實(shí)現(xiàn)一下,就基本上可以對(duì)Java下的圖形用戶界面有所了解了.文件名:FrameMemo.java功能:彈出一個(gè)帶有菜單的框架并且在框架里顯示信息.在窗口中任意位置點(diǎn)擊一下,程序退出.import java.awt.*;public class FrameMemo extends Frame{ public String motd; public FrameMemo(String s) { super(s);//super在這里代表的是父類(lèi),和this所代表的本類(lèi)相應(yīng),因此這里調(diào)用的是父類(lèi)的構(gòu)造函數(shù) motd=s; resize(300,300); SetMenu(); } public FrameMemo()//重載的構(gòu)造函數(shù) { this('This is a Memo of Frame');//這里調(diào)用的是FrameMemo(S)構(gòu)造 函數(shù) SetMenu(); } public void SetMenu() { Menu m,n; m=new Menu('Examples'); m.add(new MenuItem('Basic')); m.add(new MenuItem('Simple')); n=new Menu('More Examples'); n.add(new MenuItem('Sub Basic')); m.add(n); MenuBar mb=new MenuBar(); mb.add(m); setMenuBar(mb); } public void paint(Graphics g) { g.drawString(motd,15,15); g.drawString('Click anywhere to Exit',45,45); } public void start() { show(); } public boolean mouseDown(Event e,int x,int y) { hide();//隱藏窗口 dispose();//釋放資源 System.exit(0); return false; } public static void main(String args[]) { FrameMemo m; m=new FrameMemo(); m.start(); }}建立了窗口之后,我們還需要在窗口中擺放各種圖形界面對(duì)象,也就是說(shuō)要布局.布局的原理在前面介紹過(guò),需要使用到布局容器,然后把對(duì)象按照一定的規(guī)則填進(jìn)去.下面一個(gè)例子中演示了大部分我們需要用到的容器.我給出了很詳細(xì)的注釋,幫助我以后一旦忘了Java的語(yǔ)法后,可以迅速的尋找失去的記憶.file://布局范例file://j2sdk1.4.1下編譯通過(guò)import java.awt.*;import java.applet.*;public class Layout extends Frame{ Panel fnames,styles;//兩個(gè)字體按鈕放到fnames這個(gè)Panel中,三個(gè)風(fēng)格按鈕放到styles這個(gè)Panel中 Button sans,serif; Button bold,bigger,smaller;//定義兩個(gè)字體按鈕,三個(gè)風(fēng)格按鈕 SampleCanvas sample;//定義重載后的畫(huà)布對(duì)象 String fName=new String('SansSerif'); int fBold=0; int fSize=12; public Layout(){ super('A Memo of Layout'); setFont(new Font('Sans',Font.BOLD,12)); setLayout(new BorderLayout());//設(shè)置BorderLayout布局,該方式可安排五個(gè)元素 file://方位為東西南北中file://下面的程序?yàn)樵O(shè)置底部即南邊的兩個(gè)按鈕 fnames=new Panel(); fnames.setLayout(new GridLayout(1,2,5,10));//為panel設(shè)置GridLayout布局 file://該布局為網(wǎng)格布局 file://四個(gè)參數(shù)分別為 file://行數(shù),列數(shù),水平間隔(像素),垂直間隔(像素) sans=new Button('Sans Serif'); fnames.add(sans); serif=new Button('Sans Serif'); fnames.add(serif); file://分別添加兩個(gè)按鈕 add(fnames,'South'); file://將Panel列入BorderLayout布局中file://下面的程序?yàn)樵O(shè)置左部即西邊的三個(gè)按鈕 styles=new Panel(); styles.setLayout(new GridLayout(3,1,10,5)); bold=new Button('Bold'); styles.add(bold); bigger=new Button('bigger'); styles.add(bigger); smaller=new Button('Smaller'); styles.add(smaller); add(styles,'West'); sample=new SampleCanvas(); add(sample,'Center'); setSize(200,200);//這句話別掉羅// setVisible(true); } public void start(){ show(); } public static void main(String[] args)//初始化 { Layout MainFrame=new Layout(); MainFrame.start(); } class SampleCanvas extends Canvas { String message; public SampleCanvas() file://類(lèi)的構(gòu)造函數(shù) { rewrite('SanSerif'); file://只在創(chuàng)建對(duì)象的時(shí)候執(zhí)行,java不支持析構(gòu)函數(shù) } public void rewrite(String s) { setFont(new Font(fName,fBold,fSize)); message='This font is'+fName; repaint(); } public void paint(Graphics g) { g.drawString(message,10,50); } }} (1月28日)在網(wǎng)絡(luò)版的俄羅斯方塊程序中,應(yīng)該包含有以下幾個(gè)類(lèi):1.MainFrame:主界面類(lèi),從Frame繼承,基本定義及類(lèi)中方法功能如下class MainFrame extends Frame{ public MainFrame(){//初始化工作,主要是給對(duì)象(按鈕,畫(huà)布等)布局 } public boolean keyDown(Event e,int key){//處理鍵盤(pán)操作 } public boolean action(Event e,Object arg){//處理鼠標(biāo)操作 } public void start(){//看前幾天筆記 show(); } public static void main(String args[]) throws IOException{ MainFrame app; app=new MainFrame(); app.start(); }}2.MainCanvas類(lèi).該畫(huà)布對(duì)象將完成所有與方塊有關(guān)的邏輯操作,從Canvas類(lèi)繼承3.Block類(lèi),即方塊類(lèi).該類(lèi)存有方塊的形狀的信息(一個(gè)多維數(shù)組)等等,該類(lèi)將與MainCanvas類(lèi)相輔相成.實(shí)際上也是可以將Block和MainCanvas做成一個(gè)類(lèi)的,在我原來(lái)的C++版本中就是這樣的.但是,從面向?qū)ο蟮挠^點(diǎn)來(lái)考慮,分成兩個(gè)類(lèi)比較合適.4.ClientThread類(lèi),即客戶端的線程類(lèi)5.ServerThread類(lèi),即服務(wù)器端的線程類(lèi)ServerThread和ClientThread負(fù)責(zé)網(wǎng)絡(luò)同步的操作分析到這一部工作就基本上完成了.我決定放棄具體實(shí)現(xiàn)網(wǎng)絡(luò)版俄羅斯方塊的計(jì)劃,因?yàn)橹貜?fù)我曾經(jīng)十分熟悉的思路是一件十分無(wú)趣的事情.我準(zhǔn)備將目標(biāo)鎖定在基于Java Applet的電子白板的實(shí)現(xiàn)上.相關(guān)的研究我會(huì)放到年后的另一個(gè)系列當(dāng)中.歷時(shí)半個(gè)月的菜鳥(niǎo)筆記終于結(jié)束了.15天對(duì)于任何一門(mén)語(yǔ)言的入門(mén)都已經(jīng)足夠,畢竟語(yǔ)言只是體現(xiàn)設(shè)計(jì)思想的工具,對(duì)于任何一種工具的熟悉和使用都不應(yīng)該花費(fèi)太多時(shí)間.如何用工具打造精美的藝術(shù)品才是應(yīng)該時(shí)常在腦海中思索的.在Java入門(mén)的過(guò)程當(dāng)中,有三本書(shū)給了我不少的幫助.第一本是機(jī)械工業(yè)出版社的,由一個(gè)英國(guó)人撰寫(xiě)的.書(shū)中語(yǔ)言條理清楚,深入淺出,兩天時(shí)間就完全可以讓你初步掌握J(rèn)ava的基礎(chǔ).給我的感覺(jué),國(guó)外人寫(xiě)最基礎(chǔ)的和最深?yuàn)W的技術(shù)類(lèi)教材都很有一手.第二本是譚浩強(qiáng)主編的,名副其實(shí)的入門(mén)級(jí)參考書(shū),對(duì)初學(xué)者來(lái)說(shuō),內(nèi)容比較齊全.最后一本是chm格式的Think in Java,幫助我更加深入的了解Java,尤其是線程和同步方面的內(nèi)容.另外,我曾經(jīng)舉過(guò)的所有關(guān)于Socket的范例都源自于網(wǎng)上下的一套如何用java編寫(xiě)Socket程序的教材.這套教材也非常實(shí)用.來(lái)自:CDSN Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 定襄县| 昌黎县| 永寿县| 鄂尔多斯市| 资兴市| 华蓥市| 南岸区| 三门县| 虞城县| 鲜城| 临澧县| 通辽市| 盐池县| 梁平县| 阜城县| 和田县| 石阡县| 南宫市| 德化县| 古蔺县| 宣城市| 闵行区| 青州市| 龙泉市| 元氏县| 苏尼特右旗| 桂平市| 龙门县| 芦溪县| 普陀区| 密山市| 玉环县| 望奎县| 德清县| 洪洞县| 宜川县| 墨竹工卡县| 兴国县| 东乌| 若尔盖县| 文登市|