日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

【Java】浅谈Java的GUI开发

發(fā)布時(shí)間:2025/3/15 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Java】浅谈Java的GUI开发 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

GUI是什么?

圖形用戶界面(Graphical User Interface,簡(jiǎn)稱 GUI,又稱圖形用戶接口)是指采用圖形方式顯示的計(jì)算機(jī)操作用戶界面。
圖形用戶界面是一種人與計(jì)算機(jī)通信的界面顯示格式,允許用戶使用鼠標(biāo)等輸入設(shè)備操縱屏幕上的圖標(biāo)或菜單選項(xiàng),以選擇命令、調(diào)用文件、啟動(dòng)程序或執(zhí)行其它一些日常任務(wù)。與通過鍵盤輸入文本或字符命令來完成例行任務(wù)的字符界面相比,圖形用戶界面有許多優(yōu)點(diǎn)。圖形用戶界面由窗口、下拉菜單、對(duì)話框及其相應(yīng)的控制機(jī)制構(gòu)成,在各種新式應(yīng)用程序中都是標(biāo)準(zhǔn)化的,即相同的操作總是以同樣的方式來完成,在圖形用戶界面,用戶看到和操作的都是圖形對(duì)象,應(yīng)用的是計(jì)算機(jī)圖形學(xué)的技術(shù)。
(上面的介紹來自百度百科,我說的肯定沒他規(guī)范,有條件的可以查閱一些更好的百科……這里不能提怎么查,懂吧~~)

Java的GUI怎么樣?

GUI方面的JFC(Java Foundation Classes,Java基礎(chǔ)類庫)包含AWT、Swing、輔助功能API、2D API以及拖放API。更強(qiáng)大JavaFX早已從JDK中剝離出去,下載JDK8以后的版本應(yīng)該是不存在JavaFX的,而JavaFX甚至能提供給我們Web般的開發(fā)效果,這可比Swing好看太多了(AWT過于丑陋已經(jīng)無法被拿來探討),只不過也麻煩很多。

AWT(Abstract Window Toolkit),中文譯為抽象窗口工具包,該包提供了一套與本地圖形界面進(jìn)行交互的接口,是Java提供的用來建立和設(shè)置Java的圖形用戶界面的基本工具。AWT中的圖形函數(shù)與操作系統(tǒng)所提供的圖形函數(shù)之間有著一一對(duì)應(yīng)的關(guān)系,稱之為peers,當(dāng)利用AWT編寫圖形用戶界面時(shí),實(shí)際上是在利用本地操作系統(tǒng)所提供的圖形庫。由于不同 操作系統(tǒng)的圖形庫所提供的樣式和功能是不一樣的,在一個(gè)平臺(tái)上存在的功能在另一個(gè)平臺(tái)上則可能不存在。為了實(shí)現(xiàn)Java語言所宣稱的“一次編寫,到處運(yùn)行(write once, run anywhere)”的概念,AWT不得不通過犧牲功能來實(shí)現(xiàn)平臺(tái)無關(guān)性,也即AWT所提供的圖形功能是各種操作系統(tǒng)所提供的圖形功能的交集。

Swing是一個(gè)用于開發(fā)Java應(yīng)用程序用戶界面的開發(fā)工具包。
以抽象窗口工具包(AWT)為基礎(chǔ)使跨平臺(tái)應(yīng)用程序可以使用任何可插拔的外觀風(fēng)格。Swing開發(fā)人員只用很少的代碼就可以利用Swing豐富、靈活的功能和模塊化組件來創(chuàng)建優(yōu)雅的用戶界面。 工具包中所有的包都是以swing作為名稱,例如javax.swing,javax.swing.event。

Sun公司已于2008年12月05日發(fā)布了JavaFX技術(shù)的正式版,它使開發(fā)者能利用 JavaFX 編程語言開發(fā)互聯(lián)網(wǎng)應(yīng)用程序(RIA)。該產(chǎn)品于2007年5月在JavaOne大會(huì)上首次對(duì)外公布。JavaFX技術(shù)主要應(yīng)用于創(chuàng)建Rich Internet Applications(RIAs)。當(dāng)前的JavaFX包括JavaFX腳本和JavaFX Mobile(一種運(yùn)營(yíng)于行動(dòng)裝置的操作系統(tǒng)),今后JavaFX將包括更多的產(chǎn)品。JavaFX Script編程語言(以下稱為JavaFX)是一種declarative, statically typed(聲明性的、靜態(tài)類型)腳本語言。

官方套話,說白了就是AWT不僅特別丑還系統(tǒng)相關(guān)、重量級(jí),Swing可以有更好的系統(tǒng)無關(guān)性、挺丑,JavaFX可能會(huì)的人不太多但是看著挺好看是真的……

GUI開發(fā)怎么學(xué)?

斗膽講講本蒟蒻這一塊兒的學(xué)習(xí)經(jīng)歷。

我記得當(dāng)時(shí)學(xué)Python進(jìn)而入門編程的時(shí)候還被要求做Tkinter的GUI開發(fā),當(dāng)時(shí)就很困惑啊,這東西這么難受怎么學(xué),程序員大佬們都是什么妖孽寫得出這么厲害的UI?

后來學(xué)Java,驚覺輸入輸出的不便(感興趣可以對(duì)比Java和Python在Console輸入輸出的麻煩程度,C/C++都比Java簡(jiǎn)單的多),忘了在哪里看到一個(gè)說法是Java的設(shè)計(jì)者們?cè)谧畛醮蛩阕孞ava的開發(fā)者直接使用GUI而不是命令行(他們這些神仙可能高估了我等憨批),所以對(duì)Console的I/O支持的不是很好。而且在命令行的低端與web的復(fù)雜之間需要一個(gè)“中轉(zhuǎn)站”,我便有幸結(jié)緣了丑陋的JavaGUI至今……

學(xué)習(xí)這個(gè),開始是頭鐵硬編代碼,一個(gè)Frame/JFrame硬著頭皮用記事本敲上一個(gè)小時(shí)以上的代碼,然后再cmd的編譯錯(cuò)誤下人工debug,一步一步建立起自己的GUI小程序,如今想來竟是這么有趣~~

學(xué)了一段時(shí)間,不敢妄言會(huì)多少,但是也用過AWT和Swing開發(fā)過有趣的Demo,見過JavaFX。回顧一番,對(duì)于GUI(特別是Java這塊兒)的學(xué)習(xí)我有下面的看法:

  • 學(xué)習(xí)抓住核心三大核心內(nèi)容:組件與容器布局設(shè)計(jì)與管理事件監(jiān)聽與處理(我覺得GUI核心就這三個(gè)東西)。
  • 勤于動(dòng)手,多寫多練。你不練習(xí)總是不能很好地掌握,這里代碼動(dòng)輒百行以上,憑空想象很難入門。
  • 養(yǎng)成先做設(shè)計(jì)的習(xí)慣,UI設(shè)計(jì)是學(xué)問,但我們即使是開發(fā)小的Demo也應(yīng)該先畫畫圖,進(jìn)行調(diào)整以后再編碼實(shí)現(xiàn)。
  • 學(xué)會(huì)看文檔以及借助其他途徑,自主的解決問題,因?yàn)楹芏鄦栴}的答案網(wǎng)上基本找不到。
  • 先學(xué)會(huì)自己寫,但也要學(xué)會(huì)用插件工具加快開發(fā)速度(例如Window-Builder,真香)。
  • 積累,積累多了就有一定的經(jīng)驗(yàn)了。你若問再積累呢?那就轉(zhuǎn)Web唄哈哈……
  • 思維的轉(zhuǎn)換很重要,要學(xué)習(xí)MVC設(shè)計(jì)模式(MVC模式和經(jīng)典的23種設(shè)計(jì)模式不是一類東西),改變固有的命令行思維。
  • 有些開發(fā)需要另起線程,還要理解匿名內(nèi)部類等知識(shí),仔細(xì)看看是蠻有趣的。

當(dāng)理解和掌握了Java GUI的開發(fā)以后,就好比一個(gè)“搭積木”、“拼拼圖”的游戲過程(雖然這個(gè)過程伴隨著諸多令人頭禿的不好體驗(yàn)),慢慢的,就會(huì)漸至佳境。

VB.NET開發(fā)工具與JavaGUI開發(fā)的開發(fā)工具界面

先是看一下VB.NET開發(fā)工具——Visual Studio:

其實(shí)我們也都知道,VB.NET可以快速開發(fā)Windows環(huán)境下的GUI項(xiàng)目,VS的使用這里不加贅述,但看看它的開發(fā)方式,你可能就想:Java能不能也拖動(dòng)生成然后再編碼完善呢?
這里推薦Eclipse IDE + Window-Builder插件,開發(fā)視圖如下 (字用鼠標(biāo)寫的,太丑了,見諒) :

左下角切換文本編輯器的視圖和拖動(dòng)窗體的視圖,自己調(diào)節(jié)組件大小和進(jìn)行布局管理,可以靈活添加事件監(jiān)聽器,從而大大簡(jiǎn)化了GUI的開發(fā)。
由于寫過Window-Builder下的Swing代碼,所以學(xué)VB.NET的時(shí)候心里耐受力還是可以的。

結(jié)語

雖然現(xiàn)在大家都在學(xué)習(xí)Web開發(fā)、移動(dòng)開發(fā)而較少提及桌面程序開發(fā),更何況Java本身就是“不適合”做GUI開發(fā)的語言,有很多人覺得學(xué)而無益,故而不愿學(xué)習(xí)這塊兒的技術(shù)。
其實(shí)呢,我覺得但凡是一種技術(shù)都有它存在的意義,只不過你可能因?yàn)閭€(gè)人的精力和規(guī)劃有所傾斜或者專攻。之前玩的Logisim還是Swing寫的呢。盡管說沒意思,可又有幾個(gè)人能寫到那個(gè)程度呢?
感興趣的可以學(xué)一學(xué),不感興趣的就算了,但是我覺得UI開發(fā)的思想是貫通的。特別是Swing組件本身就采用了MVC模式,若能體會(huì)到其精髓,也算不虛此行了吧。
當(dāng)然了,GUI畢竟不能當(dāng)飯吃,只是請(qǐng)你想想:不會(huì)GUI,會(huì)不會(huì)有點(diǎn)遺憾呢?

總結(jié)

以上是生活随笔為你收集整理的【Java】浅谈Java的GUI开发的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。