OpenSwing是一個(gè)基于Swing的開源組件先進(jìn)的圖形套件工具包, - 這些組件與Swing更成熟,可以在IDE內(nèi)提供這些被操縱直接用戶界面設(shè)計(jì)師。
OpenSwing也是一個(gè)框架,提供了組件之間的數(shù)據(jù)綁定機(jī)制和數(shù)據(jù)模型,基于MVC模式的基礎(chǔ)。 數(shù)據(jù)模型是基于Java Beans(POJOs)中,它是在所有OpenSwing組件的支持,例如組件的容器或網(wǎng)格控制。
OpenSwing提供了一個(gè)完整的解決方案(框架和數(shù)據(jù)綁定功能先進(jìn)的Swing組件)快速而輕松地開發(fā)富客戶端應(yīng)用程序。
它是適用于這個(gè)不可能性框架開發(fā)Java獨(dú)立單獨(dú)使用,沒有一基礎(chǔ)數(shù)據(jù)庫,或者開發(fā)更多典型的兩個(gè)層次的client -服務(wù)器應(yīng)用程序(front-end + database)或多層應(yīng)用程序開發(fā)3((ie Swing front-end + HTTP + java servlet + database)),或開發(fā)分布式富客戶端應(yīng)用程序(Swing front-end + server side applications remotely accessed via RMI or another protocol + database)。
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
創(chuàng)建圖形界面步驟
(1)導(dǎo)入Swing包 。2)選擇界面風(fēng)格 。3)設(shè)置頂層容器 。4)設(shè)置按鈕和標(biāo)簽 (5)將組件放到容器上 。6)為組件增加邊框 。7)處理事件 (8)輔助技術(shù)支持
導(dǎo)入Swing包
下面語句導(dǎo)入Swing包 import javax.swing.*; 大部分Swing程序用到了AWT的基礎(chǔ)底層結(jié)構(gòu)和事件模型,因此需要導(dǎo)入兩個(gè)包: import java.awt.*; import java.awt.event.*; 如果圖形界面中包括了事件處理,那么還需要導(dǎo)入事件處理包: import javax.swing.event.*;
選擇界面風(fēng)格
Swing允許選擇程序的圖形界面風(fēng)格常用的有java風(fēng)格,windows風(fēng)格等 下面的代碼用于選擇圖形界面風(fēng)格,這里選擇的是跨平臺(tái)的Java界面風(fēng)格。 try { UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName( )); } catch (Exception e) { }
設(shè)置頂層容器
圖形界面至少要有一個(gè)頂級(jí)Swing容器 頂級(jí)Swing容器為其它Swing組件在屏幕上的繪制和處理事件提供支持 常用的頂級(jí)容器: JFrame(框架):表示主程序窗口 JDialog(對(duì)話框):每個(gè)JDialog對(duì)象表示一個(gè)對(duì)話框,對(duì)話框?qū)儆诙?jí)窗口 JApplet(小程序):在瀏覽器內(nèi)顯示一個(gè)小程序界面 一個(gè)框架包括邊界、菜單欄、工具欄、狀態(tài)欄,以及中間占主要部分的窗格 窗格也可以看作是一種面板,但它是框架的一個(gè)組成部分 組件不會(huì)直接放到框架上,而是放在若干個(gè)面板上,這些面板再放到窗格上 用框架對(duì)象的getContentPane()函數(shù)來獲得窗格,再調(diào)用窗格的add()函數(shù)放置面板 public static void main(String[ ]args){JFrame frame=new JFrame("SwingApplication"); JPanel panel1=new JPanel(); frame.getContentPane().add(panel1,BorderLayout.CENTER); ......//
添加其他組件
frame.pack();frame.setVisible(true);}