近把Swing里的內容稍微看了一下,Swing里的基本元素有:
1.容器
頂層容器
頂層容器常見的有兩種:
I.窗體(JFrame),它可以直接出現(xiàn)在系統(tǒng)桌面上,其它組件必須直接或間接借助頂層容器才能顯示出來。
II.對話框(JDialog),這個比較常見。
非頂層容器
非頂層容器既可以做容器,又可以做組件,如面板(JPanel)。
一般說來不直接將普通組件直接添加到頂層容器中,雖然可以這么做。而是把復雜的界面分割,將某些功能相近或位置靠近的組件放到一個非頂層容器中,這樣可以更好的操作界面,也增強了可維護性。
利用非頂層容器可以很方便的搭建界面,并且代碼清晰、難度較小。因為開發(fā)一個界面的一小部分還是比較簡單的,代碼也易于維護。
一般一個JPanel都是一個具有相同功能的子界面或一些相似組件的組合。這樣當遇到相似的開發(fā)時就可以直接重用,避免了重復開發(fā)。
(以下關于嵌板部分是從網(wǎng)上得到的,沒有試過它的用法,感覺應該挺重要的)
Swing中所有的組件都是放到容器中,主要的容器包括:JFrame,JPanel,JWindow,JDialog,JPanle。 JFrame是java的主框架,幾乎所有的Java應用程序界面都是在主框架之中設計的。有些容器并非一層,而由幾層嵌板組成,如:拆分嵌板 (JSplitPane),內容嵌板, 頁簽式嵌板(TabbedPane)等。
拆分嵌板:按指定的方向和方式拆分其內的兩個子組件,記住一個拆分嵌板只能拆分兩個子組件,如果想要拆分三個,大家自己先想一想辦法。本節(jié)后給出了答案。
內容嵌板: JFrame,Jwindow,Jdialog就是上面提到的有多層嵌板的容器,如果要在這些容器上面放置組件,必須放置在他們的內容嵌板(pane)上。我們通過函數(shù)getContentPane()可得到當前容器的內容嵌板。
頁簽式嵌板:這個嵌板如同卡片,在上面提供文件夾式的頁簽,當前只顯示一頁,如要進入下一頁,只要點擊上面的頁簽。
有些如JPanel是可以直接放置組件的容器。所以不需要使用嵌板。
2.普通組件
普通組件就是具有一定功能、但不擔當容器的組件。
這類組件非常多,如標簽(JLabel)、按鈕(JButton)、文本框(JTextField)、文本域(JTextArea)等。
普通組件都有一些通用的方法,比較說setSize(),setBounds(),setVisible()等等。
Java Swing中處理各組件事件的一般步驟是:
1.新建一個組件(如JButton)。
2.將該組件添加到相應的面板(如JPanel)。
3.注冊以事件源產生的事件(如通過ActionListener來響應用戶點擊按鈕)。
4.定義處理事件的方法(如在ActionListener中的actionPerformed中定義相應方法)。
以上步驟我們可以用多種方法實現(xiàn)。但人們通常用兩種方法。種方法是只利用一個以及多個if語句來決定是哪個組件產生的事件;第二種方法是使用多個內部類來響應不同組件產生的各種事件,其具體實現(xiàn)又分兩種方式,一種是匿名內部類,一種是一般內部類。
利用一個來處理事件的缺點是,當程序比較復雜時,需要一大串的if 語句來實現(xiàn),程序代碼較難閱讀與維護。當然,如果處理的事件較少,這種方式比較簡單。
而使用匿名內部類同樣存在許多另外的問題。首先,根據(jù)組件在代碼中被定義的不同位置,類的定義以及處理事件的代碼將分散在程序的各個部分,不是集中在一塊,同樣不便于閱讀與維護。各事件的處理全部由嵌套的程序塊組成,視覺上很難定位程序代碼。如果事件處理程序比較復雜,內部類中的代碼將變得很長,你將找不到相應的組件定義位置。后,當工具欄、菜單欄目等需要處理同樣的用戶行為時,該方法將使代碼更難維護。
一般開發(fā)的時候,有一段代碼是常用的到的:
this.set[title](String [title]);//設置標題
this.setBounds(int x,int y,int width,int height);//設置窗體的位置
this.setVisible(true);//設置窗體可見
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設置窗體關閉按鈕的作用
多做一些就能把這個給記住了...
PS:總結的有點堆零零碎碎,有些是從網(wǎng)上找來的資料,不過基本概括了近學的Swing的基本內容,可能非常淺顯,另從網(wǎng)上看到了一些材料,才發(fā)現(xiàn)自己對Swing的理解還很不夠,Swing創(chuàng)造性的采用了MVC(Model View Controller) 模式,理解這種模式才能對Swing有一個比較深入的領悟,正是由于這個機制,才使得Swing并不像表面看起來的那么差勁,Swing其實很強大!但是要理解這個MVC,要加以靈活運用,目前為止,自己的水平遠遠不能達到,而且暫時也沒有時間去整理了,準備在Java其它部分的知識先有個大概的了解之后,再進行進一步的研究吧,下面提供了關于Swing資料的下載,是我從網(wǎng)上整理了,對Swing的MVC框架的理解應該有很大的幫助~~