JAVA swing初級教程(四)


附加的swing小部件()

JOptionPane

JOptionPane 是在 Swing 中類似快捷方式的東西。通常,作為 UI 開發人員,您需要向用戶呈現快速信息,讓用戶了解錯誤和信息。甚至可能想得到一些快速數據,例如名稱或數字。在 Swing 中,JOptionPane 類為這些東西提供了快捷方式,但這並不是它必須完成的任務。不需要讓每個開發人員重頭開始重復相同的工作,Swing 已經提供了這個基本的但很有用的類,為 UI 開發人員提供了獲取和接收簡單消息的簡易方法。


使用 JOptionPane 時有點麻煩的是可以使用的全部選項。雖然簡單,但是它仍然提供了大量選項,這些選項有可能造成混淆。學習 JOptionPane 的最好方法就是使用它;編寫代碼,觀察彈出的是什么。這個組件幾乎可以讓您修改它的每一方面:幀標題、消息本身、顯示的圖標、按鈕選項,以及是否需要文本響應。因為有太多的可能性,無法在本教程中一一列舉它們,所以您最好是訪問 JOptionPane 的 API 頁面,查看它的眾多可能性。

 JTextArea

JTextArea 比 JTextField 更進了一步。JTextField 被局限在一行文本中,而 JTextArea 擴展了這個能力,支持多行文本。可以把它想像成一個空白頁,您可以在其中的任意地方進行輸入。正如您可能猜到的,JTextArea 包含許多與 JTextField 相同的功能,畢竟,它們實際上是相同的組件。但是 JTextArea 提供了一些額外的重要功能,可以把它區別開。這些功能包括單詞自動換行的能力(即把長文本自動換行到下一行,而不是將單詞從中斷開)、對文本自動換行的能力(即把長的文本行移動到下一行,而不是創建一個需要水平滾動條的非常長的行)。

支持行和單詞的自動換行的重要方法是:

· is/setLineWrap():設置在行過長的時候是否要自動換行。 

· is/setWrapStyleWord():設置在單詞過長的時候是否要把長單詞移到下一行。 

 JScrollPane

上面的示例構造完成之后,假設 JTextArea 包含太多文本,而給定的空間中容納不下,那這該怎么辦?如果您以為會自動出現滾動條,那么很不幸,您錯了。JScrollPane 添補了這個空白,為 Swing 組件提供了處理所有與滾動條相關的動作。所以雖然為每個需要的組件提供滾動塊可能有些痛苦,但是一旦添加了它,它就會自動處理每件事,包括在需要的時候隱藏/顯示滾動條。

除了用需要自動換行的組件創建 JScrollPane 之外,不必直接處理它。根據上面的示例,用 JTextArea 調用 JScrollPane 的構造函數,這為 JTextArea 創建了在文本過長時滾動的能力:

 JScrollPane scroll = new JScrollPane(getTextArea()); add(scroll); 

JScrollPane 也公開了它將創建的兩個 JScrollBar。這些 JScrollBar 組件也包含一些方法,可以用這些方法來修改組件的行為(雖然它們不在本教程的范圍之內)。

使用 JScrollPane 需要的方法是:

· getHorizontalScrollBar():返回水平的 JScrollBar 組件。 

· getVerticalScrollBar()返回垂直的 JScrollBar 組件

· get/setHorizontalScrollBarPolicy():這個策略可以是以下三個之一:AlwaysNever 或 As Needed。 

· get/setVerticalScrollBarPolicy():與水平函數相同。 

JList

 

JList 是一個有用的組件,用於向用戶呈現許多選擇。可以把它當作 JComboBox 的擴展。JList 提供了更多選擇,並添加了多選的能力。在 JList 與 JComboBox 之間進行選擇通常取決於以下兩個特性:如果需要多選,或者選擇的選項超過 15 個(雖然這個數字並不是通用規則),那么就應當選擇 JList

應用將 JList 與 JScrollPane 結合使用,就像上面演示的那樣,因為它能夠呈現比它的空間所能容納的更多的選項。

JList 包含選擇模型的概念(在 JTable 中也會看到),在這里,可以設置 JList 接受不同類型的選擇。這些類型是:單一選擇(只能選擇一項)、單一間隔選擇(只能選擇相鄰選項),以及任意多項或者多項間隔選擇(可以選擇任意數量、任意組合的選擇)。

JList 是第一個我稱為 復雜組件” 的組件,該復雜組件還包含 JTable 和 JTree,它們支持大量的定制變化,其中包括改變 UI 的表現方式、處理數據的方式。因為本教程只是想介紹基礎知識,所以我不想深入這些更高級的功能,但是在使用這些組件時有件事需要記住 —— 它們帶來的挑戰要比目前為止介紹過的所有組件都大。

JList 中有許多處理數據的函數,而且根據我的說法,這些也只不過是使用 JList 的細節的皮毛而已。以下是一些基本方法:

· get/setSelectedIndex():獲取/設置列表中選中的行;在多選擇列表的情況下,返回一個 int[]。 

· get/setSelectionMode():與上面解釋的一樣,獲取/設置選擇模式,模式有:單一、單一間隔和多選間隔。 

· setListData():設置在 JList 中使用的數據。 

· get/setSelectedValue():獲得選中的對象(與選中行號對應)。 

 JTable

在考慮 JTable 時,請想像一下一個 Excel 工作表,這樣就可以對 JTable 在 Swing 中的作用有一個清晰的印象。它與工作表共享許多相同的特征:單元格、行、列、移動列、隱藏列等。JTable 把 JList 的想法更進了一步。它不是在一列中顯示數據,而是在多列中顯示數據。讓我們以人為例。JList 只能顯示人的一個屬性 —— 例如他或她的名字。而 JTable 就能夠顯示多個屬性 —— 名字、年齡、地址,等等。JTable 是支持提供數據的大多數信息的 Swing 組件。

不幸的是,作為代價,JTable 也是最難對付的 Swing 組件。許多 UI 開發人員都為了學習 JTable 的每個細節而頭痛。在這里,我希望我把能把您解救出來,只用您的 JTable 知識處理問題。

許多 JList 中的概念也擴展到了 JTable,其中包括不同的選擇間隔的概念。但是 JList 中一列的概念變成了 JTable 的單元格的概念。這意味着在 JTable 中進行選擇時會有不同的方式,例如列、行或者一個單元格。

最后,JTable 的大多數函數都超出本教程的范圍;中級 Swing會深入這個復雜組件的更多細節

 JTree

JTree 是另外一個復雜組件,它不像 JTable 那樣難用,但是也不像 JList 那么容易。使用 JTree 時麻煩的部分是它要求的數據模型。

JTree 的功能來自樹的概念,樹有分支和葉子。您在 Windows 中使用 IE 瀏覽器時,可能非常熟悉這個概念 —— 可以展開和折疊分支,顯示可以選擇和取消選擇的不同葉子。

您很有可能發現樹在應用程序中不像表格或列表那樣有用,所以在 Internet 上沒有許多有幫助的這方面的示例。實際上,像 JTable 一樣,JTree 沒有什么入門級的功能。如果決定使用 JTree,那么立即就可以達到中級水平,當然還必須學習隨之而來的概念。因此,示例應用程序沒有介紹 JTree,所以也很不幸,不管是入門教程還是中級教程,都沒有涉及這個不太流行的組件。

但是,樹有一些時候是符合需求的合理的 UI 組件。文件/目錄系統就是一個示例(就像在 IE 瀏覽器中那樣),而且當數據采取層次結構的時候,也就是說數據采用樹的形式的時候,JTree 就是最佳組件。


免責聲明!

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



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