Java是一種跨平臺(tái)語(yǔ)言,最為常見(jiàn)的應(yīng)用場(chǎng)景就是桌面應(yīng)用程序。而Java GUI中,有兩種常用的圖形庫(kù),分別是QT和Swing。
QT是一種跨平臺(tái)應(yīng)用程序開(kāi)發(fā)框架,在C++中使用,但是也能支持其他語(yǔ)言,如Python、Java等。使用QT庫(kù)寫(xiě)出的程序在不同操作系統(tǒng)上的顯示效果基本一致,這也是為什么很多開(kāi)源軟件采用QT作為缺省的圖形庫(kù)。
示例代碼 import com.trolltech.qt.gui.QApplication; import com.trolltech.qt.gui.QPushButton; public class QtDemo { public static void main(String[] args) { QApplication.initialize(args); QPushButton btn = new QPushButton("Hello World"); btn.clicked.connect(QApplication.instance(), "quit()"); btn.show(); QApplication.exec(); } }
而另一種常用的圖形庫(kù)則是Swing,它是Java語(yǔ)言自帶的GUI組件工具包。Swing庫(kù)提供了大量的類(lèi)和接口,它的主要特點(diǎn)是輕量級(jí),旨在為Java GUI平臺(tái)提供一組可擴(kuò)展的組件。雖然它沒(méi)有QT那么漂亮,不過(guò)它的優(yōu)點(diǎn)是輕便、易學(xué)、易用,更重要的是它可以在Java環(huán)境下運(yùn)行,無(wú)需任何第三方庫(kù)支持。
示例代碼 import javax.swing.JFrame; import javax.swing.JLabel; public class SwingDemo { public static void main(String[] args) { JFrame frame = new JFrame("Hello Swing"); JLabel label = new JLabel("Hello World"); frame.getContentPane().add(label); frame.pack(); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
總之,選擇哪種圖形庫(kù)還得根據(jù)實(shí)際情況,QT適用于需要在多種操作系統(tǒng)上統(tǒng)一顯示效果的程序,而Swing則適用于輕量級(jí)的小型應(yīng)用程序。兩者在編程風(fēng)格上也有所不同,QT更面向?qū)ο螅鳶wing則采用MVC(模型-視圖-控制器)設(shè)計(jì)模式。