Java桌面GUI庫


感覺用Java開發web app是非常普遍的,工具啊,庫啊都非常豐富,那么如果用Java開發一個普通的桌面應用,有哪些GUI庫可供選擇呢?

一、AWT

Abstract Window Toolkit, 是Java中引入最早的GUI庫,它是對native system的一個封裝,真正的窗口渲染還是由操作系統功能提供的,這使得用awt寫的UI,其在不同的系統上顯示是不一樣的 - 都是按照目標系統的風格顯示的。

AWT提供了兩個層面的Java API:一個是對native system的窗口,事件等基本機制的封裝; 二是提供了如button,checkbox等現成的控件。

AWT是JFC[1]的一部分 

二、Swing

AWT和Swing都是JavaSE的組成部分,但Swing提供了更為豐富的功能與控件,如 tabbed panel, scroll panes, trees, tables和lists等

而且因為Swing使用Java2D實現,所有代碼都是java,無需依賴於native system,因此,其look&feel可以在不同系統建保持一致 - 但你同時又可以調整讓其以native system的風格顯示,可以說更加靈活。

Swing采用了MVC架構。

三、 SWT

Standard Widget Toolkit, Eclipse出品,和AWT一樣,SWT同樣也是使用JNI訪問native system api實現,使用SWT的程序是跨平台的,但是SWT的實現本身,卻需要為每個平台都實現一份。

SWT是集合了Swing和AWT的一些特點:它和AWT一樣調用了native函數,運行效率高且保持了native的look&feel,但同時它有提供了Swing一樣強大的功能和豐富的控件。

雖然SWT本身不支持MVC架構,但Eclipse提供了另一個基於SWT的高層次的庫:JFace,JFace不僅支持MVC架構,並且提供高層次的控件與UI機制, 如Viewer,Wizard, Action等

四、QT jambi

這是一個對著名C++ GUI庫QT的java 封裝,如果熟悉QT的話,用這個應該會比較貼心。

但Qt Jambi在10年被諾基亞放棄,而Qt又於近日被諾基亞放棄(12年五、六月份左右),玩去昂考opensource的力量在支撐,其前景有待考慮。

五、JavaFx

JavaFx是一種更高層次的GUI framework,一般可以用來構建internet、desktop、mobile、game console等UI,其競爭者有AJAX,Flash,Silverlight。

這個可能不是做一個簡單的Java Desktop Application的好選擇。

 

GUI Designer

開發GUI程序,而沒有一個UI designer的話會是非常低效的,MyEclipse提供了一個針對Swing的Swing GUI Designer 10.6 [2],但是目前網絡上多數指向它的鏈接都無法訪問,據說其MyEclipse已經停止開發它了,所以感覺價值不是很高。但是google又一次大度的給出了Java GUI Design方面的神器:WindowsBuilder,  支持Swing和SWT,相當強大。

 

所以,用java開發一個desktop的程序時,我會選擇swing(功能強大,且lightweight,無須轉調native call), 配上WindowsBuilder.

 


[1] JFC = Java Fundation Classes (效仿MFC?) 其包括AWT, Swing和Java2D

[2] 又叫Matisse4MyEclipse, 其原型是Netbean中的UI designer Matisse


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM