aswing元件知識點 元件知識點: 1. JPanel:JPanel是AsWing 中最常用的容器元件,它是Container的直接子類,通常作為 透明或非透明容器用(setOpaque 方法可以設定它的透明屬性)。 2. JWindow:JWindow 是AsWing 中常用的視窗元件,它是JPopup 的子類,可以做彈出 視窗用,對于單視窗程式,它也可以作為根元件使用。 3. JLabel:JLabel 是标簽元件,它用于顯示一個字元串。 4. LineBorder:線框,用于在元件周圍繪制一個矩形邊框。 5. JToolBar:JToolBar 是一個工具欄容器,它可以橫向或者豎向排列加入其中的元件,并會使得加入其中的按鈕具有一般應用程式工具欄按鈕的效果,即滑鼠滑過時彈起,滑開時隐藏按鈕邊框,滑鼠在按鈕之上時按鈕保持通常的行為。 6. JButton:JButton 是普通按鈕元件,它繼承自AbstractButton,擁有AbstractButton 的所有行為和方法以及事件。除了JButton,還有開關按鈕JToggleButton,單選按鈕JRadioButton,複選框JCheckBox 等都是AbstractButton 的子類。 7. JMenuBar:菜單條唯一的作用是容納菜單,菜單作為Component 的子類,理論上可以 放置于任何一個Container 及其子類中,但是菜單條不僅僅提供對菜單的包含作用,它還提供了菜單的鍵盤導航作用——選中任何一個菜單時按左右鍵可以在同級别其他菜單中切換。 8. JMenu:菜單是菜單項(JMenuItem)的子類,是以菜單也擁有菜單項的所有功能,如 果把JMenuItem 比作Component,JMenu 就好比Container。菜單還可以包含菜單(子菜單)。然後菜單并不是一個正規的Container,他對菜單項的容納是通過一個JPopupMenu 來實作的,因為菜單非選擇狀态下并不需要顯示出它的子項,隻有在選中時,才彈出一個包含了其子項的JPopupMenu。 9. JMenuItem:菜單項是AbstractButton 的子類,是以菜單項的行為和按鈕行為一樣,所 擁有的方法也大體相同。當然,AsWing 也提供了單選菜單JRadioButtonMenuItem 和複選菜單JCheckBoxMenuItem,它們的行為與JRadioButton 和JCheckBox 一樣。 10. JTable:資料表格元件,在一些元件庫中,它也被命名為DataGrid。在AsWing 中,JTable 由TableMode l 提供資料,JTable 本身實作了Viewportable 接口,是以可以直接被JScrollPane包含,擁有滾動功能。JTable 是一個大型元件,擁有很多操作接口。 11. Table Model:表格模型,它是JTable 的資料提供者。它通過自身的接口提供表頭,各行列資料,并在資料發生更改時發出事件。TableMode l 是一個接口,是以任何完整的實作都可以用于向JTable 提供資料, AsWing 自帶的實作有DefaultTableModel 和 PropertyTableModel。 12. PropertyTableModel:這是一個TableMode l的實作。常常用于把一個對象清單中的對象資料,以對象為行,以對象屬性為列來顯示,它提供預設方式把屬性值以直接字元串化顯示,也提供轉換器(PropertyTranslator 或Function)把值轉換成期望的字元串格式來顯示。 13. Table Column:它是JTable 中的一個列。通常不必手動建立它,當JTable 建立時,或者資料模型列數改變時,相應的TableColumn 就會被建立,通過JTable 的getColumnAt 或者getColumn 方法可以得到指定的TableColumn 對象, 常用的TableColumn 的方法為setPreferredWidth,設定它相對于預設值75 的大小,各列不同的期望寬度形成一個比例關系,JTable 根據這個比例關系來配置設定初始化時各列的寬度。 14. Table Sorter:表格排序器。它是TableMode l 接口的一個實作,通過包裝一個現有的 TableMode l 來實作排序。實作原理為:以選擇排序方式為基準,變換原始TableMode l 類的行的值,以達到變換行順序的目的。排序所采用的值比較函數,可以通過給指定列設定列類型,然後給指定列類型設定比較函數來達到。預設情況下,所有列的類型都是Object 類型,TableSorter 自帶String 和Number 類型的比較函數,對于沒有指定比較函數的列,預設将采用String 類型的比較函數。 15. columClass:列類型。它屬于TableModel 的内容,主要目的是為了讓不同類型的列能使用格子的排序比較函數和單元格渲染方式。 16. Table Cell:表格單元格接口。表格界面是由表頭+單元格+分界線組成,單元格負責描繪資料單元。預設情況下,表格采用PoorTextCell 單元格,負責把單元格值以字元串文本的形式描繪出來。如果開發者需要改變描繪方式,比如用特殊的顔色,或者用圖形,或者用其他元件如選擇框,下拉框,都可以通過實作自己的TableCell 來達到。TableCell 最主要的兩個接口是setCellValue(value:*) : void 和setTableCellStatus(table :JTable,selected : Boolean, row : int, column : int) : void,前者意為給單元格設定要描繪的值,後者意為設定單元格的狀态,通常,在前者中為單元格元件設定要描繪的内容,在後者為單元格元件設定字型和顔色。另外,getCellComponent( ) : Component 接口則是傳回要描繪單元格的元件。讀者可以參考AsWing 自帶的PoorTextCell 和DefaultTableCell 兩個類來研究單元格的實作方法。理論上,任何元件都可以作為單元格元件,是以,AsWing 的表格擁有極其靈活的表現方式,你可以在單元格裡放置一個擁有大量元件的容器,或者一個樹,甚至是表格——形成表格中的表格。 17. TableCellFactory :單元格工廠。産生單元格執行個體的工廠, 通常使用 GeneralTableCe llFactory 即可,單元格工廠隻是用來建立單元格執行個體的類,是以并不複雜,可以參考GeneralTableCe llFactory 類的源代碼了解其意義。 18. columClass:列類型。 19. Selection Event:選擇事件。表格的行,列(以及清單List)共用的選擇事件類。 SelectionEvent.ROW_SELECTION_CHANGED 事件代表行的選擇改變時發出的事件,相應的SelectionEvent.COLUMN_SELECTION_CHANGED 則代表列的選擇改變時發出的事件, 預設情況下,表格JTable 是關閉了行選擇功能( 如果需要,可以通過JTable.setColumnSelectionAllow ed(true) 來開啟它)。由于我們的表格設計為每行顯示一個日程,是以當行選擇改變時,我們就能通過行号來擷取到選中的日程。注意,由于我們使用了TableSorter 來進行排序,是以顯示出來的行的順序可能和資料模型中順序不同,是以需要通過TableSorter.modelIndex 方法來進行轉換才能得到實際資料模型中的對應的行。 20. 處理函數:在TaskManager 中,我們實作了一個日程改變的處理函數的邏輯,這是為了封裝表格事件與模型的關聯細節,對外隻暴露出一個處理函數,友善外部簡單獲得需要的資料,從TaskDetailsController 的簡潔即可看出這種方式的便利性。但是這種方式也把處理函數局限到隻能有一個的境地,如果還有其他控制器需要處理日程選擇的改變事件,那麼此方法必須改進,可以通過維護一個處理器清單,把設定處理器改為添加和移除處理器的方式,允許多個處理器同時存在,來達到目的。當然,也可以更傳統地讓TaskManager 繼承或含有EventDispatcher,用事件的方式來實作。 21. 界面更新:對于标準的MVC 模式的元件,隻需要通知Model 某些資料改變了,Model 會自己廣播事件給Controller,Controller 則會根據事件内容對View 做内容更改,是以界面更新工作非常簡單。比如本節對TaskManager 添加的notifyTaskChanged 函數中的第一句,它通知清單模型某個Task 更改了,然後表格自動就會顯示出更改後的新内容,這是因為清單模型通知了包含它的表格模型(PropertyTableModel),表格模型會發出事件告訴表格的控制器,然後表格控制器則會對表格界面進行更新,這一過程已經在AsWing 的JTable及相關類中實作好了,使用者使用起來不用關心其中的細節。而對于我們自己編寫的日程細節顯示部分,這并不是一個MVC 模式的實作,由于其功能簡單,并且不需要複用,是以我們也沒必要大費周折的把它用MVC 來實作一次,我們隻需要在notifyTaskChanged 函數中用了一個if 判斷,然後再借用__rowSelectionChanged 現有的邏輯,即實作了更新它的界面的能力。 22. 元件有效性設定:為了提升使用者感受,我們通常隻讓能用的元件處于可點選狀态,比如 本節對編輯日程按鈕及菜單的設定,當沒有選中任何日程時,它們不應該處于有效狀态,這會誤導使用者,而當有日程被選中時,它們則應該立刻變為有效狀态,這些,一般可以通過監聽選擇更改事件來進行處理。本節通過改進上一節自制的日程改變處理函數的功能,達到了這個目的。當然,像上一節提到的一樣,你也可以用更通用的Event 方式來實作,同樣可以達到這樣的目的。 23. Cell Editor:單元格編輯器,它是一個接口,任何完整實作了此接口的類,都是一個單元格編輯器,而不同的元件通常還有自己專屬的單元格編輯器子接口,比如表格的單元格編輯器是需要完整實作TableCellEditor 的(當然它也是CellEditor 的子類,對應,樹的單元格編輯器接口是TreeCellEditor ),但是就目前版本的AsWing 實作中, TableCellEditor 和TreeCellEditor 都沒有附加的方法,是以它們的各自的實作,是可以輕松共用的。本節中使用了AsWing 自帶的DefaultNumberTextFieldCellEditor 來編輯時長,是因為時長是數字類型;用DefaultComboBoxCellEditor 來編輯狀态,并填入狀态數組,是因為狀态是幾個字元串值的枚舉。AsWing 除了自帶這兩個編輯器外,還有一個用于編輯字元串的DefaultTextFieldCellEditor。對于一個特定類型屬性的編輯,一定要配上對應的編輯器,否則編輯器傳回的值類型不同,程式則會出錯,讀者可以試着把本節的3,5 列編輯器對調,然後運作程式試試看是什麼後果。 對于無法采用AsWing 自帶編輯器來編輯的屬性,開發者必須自己實作對應的編輯器, 這裡舉日程開始時間屬性為例,雖然表現形式是一個字元串,但是實際的值是Date 類型,是以不能采用DefaultNumberTextFieldCellEditor 或DefaultTextFieldCellEditor,雖然DefaultComboBoxCellEditor 理論上可以支援任何類型,但是我們不能枚舉所有的時間。 24. JToolTip :工具提示元件, 通常并不直接建立此類的執行個體, 而是采用 Component.setToolTipText 方法給元件設定提示文字,此方法的内部實作實際上是使用了一個共享的工具提示元件來顯示提示,因為通常并不會有多個提示同時出現,是以采用一個共享的執行個體有助于節約記憶體。但是,當需要自定義工具提示的一些特性時,則需要自己建立甚至繼承JToolTip,JToolTip 是Container 的直接子類,是以開發者還可以把它當作容器添加額外的内容。JToolTip 最重要的方法是setTargetComponent,它用來設定工具提示的宿主,使得工具提示就明白在哪裡顯示,在何層顯示,是以在建立JToolTip 的時候,必須調用它設定宿主,然後工具提示才可能正确工作。此外, JToolTip 還可以設定提示框顯示坐标是相對于元件位置還是目前滑鼠位置,位置偏移量等,具體請查閱api 文檔。 25. JSharedToolTip:共享工具提示元件,由于工具提示通常并不需要同時顯示多個,是以如果多個元件需要提示時,可以共用同一個工具提示,此類正是為此而誕生的。 Component.setToolTipText 方法内部其實就是使用了此類來實作的。當需要給一個元件設定工具提示時,調用registerComponent 方法注冊, 當需要移除時,調用 unregisterComponent。JShared ToolT ip.getShared Instance 靜态方法始終傳回同一個執行個體,是以需要全局共享工具提示元件時,即可調用此方法得到全局共享的執行個體。 26. 背景色:在AsWing 中,每個元件都必有兩個顔色屬性,前景色和背景色,前景色通常 代表元件的文字顔色,背景色代表底色,可以通過setForeground 和setBackground 來設定它們。與背景色相關聯的還有不透明屬性——opaque,有的元件預設是透明的,有的不是(視不同的LookAndFeel 而定,後面章節會進行介紹),如果要确定背景色是否有效,可以調用setOpaque 方法設定是否不透明。 27. ASColor:顔色類,含有rgba 屬性的類,此類為immutable 特性的類,即一經建立,屬性就不會再變化,與String 類型一樣。是以如果要改變一個元件的顔色,必須設定另一個顔色對象。不同的顔色對象,可能具有相同的顔色屬性,比較兩個顔色是否相同,可以用ASColor.equals 方法來進行判斷。 28. 邊框(Border):元件的邊框,通常大部分元件的預設邊框都為null,即沒有邊框。開發者可以通過給元件設定邊框來修飾界面。Border 是一個接口,借此開發者可以實作任意自己想要的邊框類型。通常,LookAndFeel 會給一些元件用設定邊框的方式來進行修飾,這時如果你給這種元件設定了另外的邊框,則會影響它原來的外觀,你可以通過getBorder() isUIResource 來判斷現有邊框是否為LookAndFeel 的UI 資源。實作自己的邊框類方式和實作一個Icon 類似,可參考下一節自定義Icon 相關内容。 常用的邊框:AsWing 自帶有7 個常用的邊框類,分别是: ???? BevelBorder:斜邊邊框。此邊框通常用來建構凹陷或凸起效果???? CaveBorder:凹穴邊框,此邊框是由TitledBorder 去掉标題文本簡化而來的,它表現為一個高亮線條框,可以直角也可以圓角???? LineBorder:線條邊框,此邊框表現為指定顔色,線條寬度,圓角跨距的線框 ???? SideLineBorder:單邊線條邊框,有時候隻需要在元件的某一邊有一條線,比 如分割線,就可以使用此邊框 ???? SimpleTitledBorder:簡單标題邊框,此邊框在元件上方或者下方顯示一段文 字,可作為一些元件面闆的标題 ???? TitledBorder:帶有标題和高亮線框的邊框,這可能是最常用的 ???? EmptyBorder:空邊框,空邊框看似什麼都不做,其實用處非常廣泛,因為它是空的,是以常常用于制造空隙,比如一個文本标簽,它的期望大小是剛剛能完全顯示文本字元串的大小,如果想讓它上下左右擁有各4 個像素的空白,那麼可以給這個标簽設定這樣的邊框new EmptyBorder(null, new Insets(10, 10, 10, 10))。 29. 圖示(Icon):在AsWing中,所有AbstractButton 都能設定圖示,包括按鈕,單選複選框,菜單等等,并且不同的狀态還可以設定不同的圖示。圖示接口共有4 個方法,要實作自己的圖示類并不難,不過通常使用LoadIcon 或AttachIcon 或者直接使用AssetIcon 已能達到大部分的需要(與美術設計師創造的圖形資源配合)。與Border 不同的是,LookAndFeel 通常不會給元件設定圖示來修飾元件(JFrame 的預設圖示除外)。 30. AssetIcon:元件圖示,通過一個元件執行個體建立的圖示,圖示元素就是傳入的元件本身。 構造函數形式為AssetIcon(asset:DisplayObject=null, width:int=-1, height:int=-1,scale:Boolean=false),第一個參數為圖示的元件,它可以是任何DisplayObject 對象,位圖Bitmap 或者動畫MovieClip 等都可以,width 和height 指定圖示的寬高,如果用預設值-1,那麼它會采用元件的width 和height 屬性,最後一個參數scale,是指當指定的寬高和元件本身寬高不等時,是否需要縮放元件到指定的寬高值。 31. Attach Icon:圖示(Icon):在AsWing中,所有AbstractButton 都能設定圖示,包括按鈕,單選複選框,菜單等等,并且不同的狀态還可以設定不同的圖示。圖示接口共有4 個方法,要實作自己的圖示類并不難,不過通常使用LoadIcon 或AttachIcon 或者直接使用AssetIcon 已能達到大部分的需要(與美術設計師創造的圖形資源配合)。與Border 不同的是,LookAndFeel 通常不會給元件設定圖示來修飾元件(JFrame 的預設圖示除外)。 32. AssetIcon:元件圖示,通過一個元件執行個體建立的圖示,圖示元素就是傳入的元件本身。 33. AttachIcon:綁定元件圖示,它是AssetIcon的子類,通過指定元件類名和程式域建立 元件執行個體,并用此執行個體作為圖示元素。 34. LoadIcon:加載資源圖示,也是AssetIcon的子類,通過加載指定路徑下的一個元件資 源來作為圖示元素。 35. LoadIcon:加載資源圖示,也是AssetIcon的子類,通過加載指定路徑下的一個元件資 36. GroundDecorator:前景/背景裝飾器,由于所有元件都可以擁有一個前景裝飾器,一個背景裝飾器,是以在裝飾一個元件時,它是最好的選擇,比如你要讓一個視窗的底層顯示一個動畫,那麼用yourWindow.setBackgroundDecorator(new AssetBackground(yourMovie));即可達到。 37. AsWing 元件可以随意的添加任何顯示元件,這和Flex 界面架構不同,Flex 界面框 架要求被添加的顯示元件必須實作IUIComponent 接口,給開發人員與美術設計人員之間的配合帶來了諸多不便。 直接添加顯示元件:雖然AsWing 元件沒有限制往内添加任何顯示元件,但是也有需要 注意的地方。比如上例中關于遮罩的問題,和JFrame 一樣,所有元件預設都是被遮罩的,如果你的圖形内容需要超出元件範圍,那麼就需要取消遮罩,但是要謹慎使用,取消遮罩也就意味着這個元件的圖形可能會超出自己的範圍進而與其他元件相疊。并且,對于JFrame,取消掉遮罩還意味着最小化的時候元件的contentPane 會暴露出來,因為遮罩失效了,最小化時contentPane 不會被遮起。通常的解決方法是,要麼對這樣的JFrame 取消最小化功能,要麼監聽最小化事件,在最小化之後把contentPane 設定為不可見(setVisible(false))。另外,如果你添加的元件是一個InteractiveObject,典型的比如一個綁定的MovieClip,它會吃滑鼠事件,為了不讓其吃掉元件本應該吃的滑鼠事件,你應該把它的mouseEnable 和mouseChildren 屬性設定為false,除非你故意需要它來吃事件。 38. 自定義光标:光标管理器的方法都非常簡單,本節就不再舉例了,讀者可以自己嘗試編 寫例子來實驗。這裡講講自定義光标的内部實作細節,AsWing 自定義光标是通過在光标根容器中添加光标元件,并且監聽滑鼠移動事件來同步元件與滑鼠的位置來實作的。光标根容器預設為Stage,你也可以通過setCursorContainerRoot 方法來設定到别的容器内,但注意滑鼠根容器應該是處于一個比較根部的位置,以使得滑鼠圖形元件被添加時,能夠始終顯示在最上層。 39. 包裝SimpleButton:AbstractButton 及其子類都擁有此能力,此能力極好的友善了開發人員直接使用美術設計師建立的按鈕元件。它的實作原理,其實是把SimpleButton 按鈕元件作為AbstractButton 的Icon,然後根據AbstractButton 的狀态變化,設定SimpleButton的狀态,實作代碼并不複雜,讀者可以參閱SimpleButtonIconToggle 類的源代碼,觀察它的内部實作細節。JButton 覆寫了wrapSimpleButton 并采用了略微不同的實作方式,目的是使滑鼠點選範圍完全轉移到SimpleButton 上,使得包裝後的JButton 與原始SimpleButton 的行為更一緻。讀者如果通過閱讀相關代碼,了解了包裝SimpleButton 的實作原理,那麼你也就學會了更深入的修飾AsWing 元件的方法了。 40. JList 是一個實作了Viewportable 的元件,用來顯示一個從上到下排列的資料列 }}表,條目單元的顯示由ListCell 定義,ListCell 的執行個體由ListCellFactory 産生, 資料模型由ListModel 提供。JList 擁有的事件比JTable 略多,除了條目選擇變化事 件外,還擁有一些列與條目自身相關的事件,比如條目被點選,條目在滑鼠移出範圍時等,注意,如果要監聽條目輕按兩下事件,需要給單元格元件(getCellComponent 方法傳回的元件)設定doubleClickEnabled=true,否則不會生效。詳細的事件定義請參閱相關api文檔。 41. VectorListModel是AsWing自帶的ListModel 實作,它的行為類似一個Vector, 可以随意在任何位置插入/删除資料,并且在資料改變時,會自動觸發對應的事件,使得JList 自動更新界面顯示。讀者可以嘗試給上面的例子程式加入删除/添加條目的功能,觀察JList 是否會自動的更新。 42. ListCell定義了JList 的單元格渲染,和TableCell 原理類似,AsWing 自帶的 實作有DefaultListCell,它表現為把資料以字元串的方式顯示(資料的toString() 方法的傳回值将作為顯示字元串)。 43. ListCellFactory 是建立ListCell 的工廠,與TableCellFactory 類似,但它 還負責更多的事情,除了建立ListCell 的方法外,它還有: ???? isAllCellHasSameHeight():Boolean 方法,指出此工廠生産的單元格 是否都以相同的高度來顯示。如果此方法傳回true,那麼getCellHeight 傳回的值 将作為所有單元格的高度值。 ???? getCellHeight():int 方法,傳回所有單元格應該被設定的高度值。僅當 isAllCellHasSameHeight 方法傳回true 時有效。 ???? isShareCells():Boolean 方法,指出是否應該共享使用單元格執行個體,如果此方法傳回true,JList 會隻建立能夠被顯示出來的單元格數量(比如JList 高度為100,單元格高度為20,那麼單元格執行個體隻會被建立出5 個左右),在JList 滾動的時候,實時給單元格設定滾動後對應的資料;如果此方法傳回false,JList 會為每個資料條目建立一個單元格,這樣在JList 滾動的時候,就不用再次設定各單元格的資料,隻需要調整單元格元件的位置即可。注意,在共享單元格的時候,isAllCellHasSameHeight 傳回false 無效, 會始終視為所有單元格都擁有getCellHeight 傳回相同的高度值。 44. PreferredSize,關于期望大小,盡管本節我們的例子都給JList 設定了VisibleCellWidth 和VisibleRowCount,但是在通常的程式開發中,筆者很少這樣 做,因為通常我們都需要讓JList 這樣的大元件占滿剩餘的區域(處于BorderLayout 的Center 位置),由此以來,期望大小就不用在乎,而且,對于非共享Cell 的情況下, JList 會為每個Cell 計算各自的期望寬度,并根據最大的寬度來作為期望寬度,而且, 在需要水準滾動條的時候,則能夠自适應出現合理的水準滾動條。之是以讓ListCellFactory 有這樣的參數,是為了效率和靈活性, JList 擁有比JTable 更大的變化性。比如,上例我們就不能共享單元格,否則每次操作都會重新加載圖檔,無論是對網絡壓力還是使用者感受,都不利。再者,如果一個清單,含有上萬級别的條目數,就最好是采用共享單元格執行個體的方案,有助于節約記憶體。另外,允許單元格擁有不同高 度的政策,使得表格能夠有更大的變化性,比如可以友善地實作類似QQ2008 風格的好友清單(可參考文章http://www.aswing.org/?p=232)。 45. JTree: 與JList 類似,JTree 的期望大小也需要通過一些列方法的設定來進行調整,它們是: ???? setRowHeight(rowHeight:int):void,設定每一行的高度(預設值為16), JTree 的所有行都擁有相同的高度。這與JList 不同,JList 為了擁有更大的靈活性,把此設定交給了ListCellFactory,并且允許不同的行可以有不同的高度, JTree由于其自身的複雜性,沒有提供這樣的靈活性,采用這一更利于管理和運作效率的統一高度的政策。 ???? setVisibleRowCount(newCount:int):void,設定期望顯示出的行數,它的功能與JList 的同名函數相同。 ???? setFixedCellWidth(width:int):void,設定-1 指明自适應條目的期望寬度,設定非-1 值指明所有條目采用指定寬度值。此方法與JList 的setVisibleCellWidth 方法含義不完全相同,JList 由于在共享Cell 的時候,無法計算寬度,是以需要設定(非共享Cell 時可以不用設定即可自适應),而JTree 能夠計算所有條目的期望寬度,是以除非你想使所有條目擁有共同的一個寬度,否則不需要設定此屬性的。 46. JRootPane 和JPopup:JRootPane 是所有根容器(比如JFrame,JWindow,JPopup 等) 的基類,它内部封裝了作為一個根容器的鍵盤管理(KeyboardManager)功能,任何繼承自它的容器,都能擁有獨立的鍵盤管理功能,比如快捷助記符(Mnemonic),Enter鍵觸發的預設按鈕等。JPopup 繼承自JRootPane,是一個最原始的彈出容器,它是JWindow 的父類,它作為彈出根容器,最大的特點就是不用顯式的被addChild 或者append 到舞台中,隻要建立它的執行個體,然後調用show(或者setVisible(true))方法即可讓它顯示到舞台上。從前面章節介紹過的JWindow 和JFrame 的使用方法即可看出這一點。 47. AssetPane(JLoadPane, JAttachPane) : 資源面闆, 這裡的資源是指顯示元件 (DisplayObject),前面章節我們講到過可以通過addChild 添加任意顯示原件到AsWing元件中,但是如果你想讓所加入的顯示原件也能像元件一樣的被布局管理器自動布局,那麼可以使用AssetPane 來包裝這個顯示原件。JLoadPane 和JAttachPane 都是AssetPane 的子類。 48. JLabelButton:标簽按鈕,表現形式就像一個純文字超級連結,它是AbstractButton 的子類,是以擁有按鈕的所有功能。 49. JAdjuster:調節器,用于讓使用者選擇一個範圍内的值,也使用BoundedRangeModel, 表現形式為一個輸入框,右邊一個下拉按鈕,點選後會彈出一個滑動條(Slider)。 50. JPopupMenu:彈出菜單,它是一個菜單容器,使用它可以在任何地方彈出一個菜單面闆, 51. JMenu 實際上是使用了一個JPopupMenu 來作為子菜單的容器。 52. JSeparator:分隔條,純界面元件,無實際功能,以一個凹槽條的形式來美化界面需要 的間隔。 53. JSpacer:占位器,無實際功能,通常也無界面表現(全透明),用來在布局管理器中進行占位,也可以起到分割界面的作用。 54. JSplitPane:分割面闆,此容器可以容納兩個元件,使其左右/上下分布,中間會有一 個分隔條, 并且使用者可以拖動分隔條進行左右/ 上下空間分布的調節。如:彈出菜單,它是一個菜單容器,使用它可以在任何地方彈出一個菜單面闆 55. JMenu 實際上是使用了一個JPopupMenu 來作為子菜單的容器。 56. JSeparator:分隔條,純界面元件,無實際功能,以一個凹槽條的形式來美化界面需要的間隔。 57. JSpacer:占位器,無實際功能,通常也無界面表現(全透明),用來在布局管理器中進行占位,也可以起到分割界面的作用。 58. JSplitPane:分割面闆,此容器可以容納兩個元件,使其左右/上下分布,中間會有一 個分隔條, 并且使用者可以拖動分隔條進行左右/ 上下空間分布的調節。 59. JColorChooser(JColorMixer,JColorSwatches):顔色選擇器,JColorChooser 由兩部 分組成,混色器(JColorMixer)和樣色闆(JColorSwatches),并且它們也是可以單獨使用的元件。 |