Swing 用戶界面組件
一種模式:模型----視圖-----控制器
模式有很多種,例如:模型----視圖----控制器(原則爲限制一個對象擁有的功能數量);組合模型--容器和組件之間;裝飾器模式----帶滾動條的面板;策略模式-----佈局管理器
內容---外觀----行爲----MVC
模型與視圖之間關係 1:n 模型獨立於觀感,所以,有重用的可能
模型可能相同,但視同和控制器可能不同
metal觀感中,JButton 繼承了JComponent的包裝器類,後者包含了DefaultButtonModel(模型)對象和BasicButtonUI(視圖)對象。
流佈局管理器:組件防止在容器中,流佈局管理器全權安全組件的放置,容器也可以放置在另一個容器中,按鈕和文本域都繼承於Component類,Component類的層次結構詳述與P328
容器的add方法可以把組件和放置方法傳給佈局管理器,.segLayout(爲容器防止佈局管理器)
邊框佈局管理器,每一個JFram的內容窗格的佈局管理器,這個佈局管理器允許爲每個組件選擇一個放置位置 .add(組件,東南西北中);縮放時,邊沿組件大小先不變,中間組件的大小先發生變化, 默認是:中。
流佈局管理器:維持每個組件的最佳尺寸 ----------邊框佈局管理器:擴展組件以填充可用空間
詳述於P330
文本域 只能接受單行輸入------JTextField-----new JTextField("內容",極限個數),文本區接收多行------JTextArea,密碼輸入不顯示正確內容--------JPassword 這三個類繼承於JTextComponent抽象類 這個抽象類中有方法getText,setText(對文本的操作), isEditable,setEditable(對可編輯性操作);可以利用方法 setColumns()重新設定列數(字的個數),在使用這個方法後需要調用這個文本框容器的revalidate方法(這個方法是JComponent類的方法)這個方法將會重新計算容器內各個組件的大小並佈局,但是如果想重新計算JFrame(框架)中所有組件的大小應該使用名爲validate方法,因爲JFrame並不繼承於JComponent類
使用setText(字符串),這個方法定義在JTextComponent類中,與getText方法對應
getText().trim()得到無空格的字符串
setFont方法將改變現實的字體 詳述於p335
JLabel 是實現了JConstants接口的一個swing類,帶有排版參數常量例如:SwingConstants.RIGHT或者JLabel.RIGHT右爲準。
可以使用名字,圖標,排版進行構建JLabel實例
文本區中的換行只是視覺效果,文檔中的文本沒有改變(加換行符),可以使用.setLineWrap(true)方法防止裁剪過長的行
文本區插入到滾動窗格中可以實現滾動條,new JScroolPane(文本區組件),加入後,滾動窗格負責管理文本區的視圖,可以爲任意的組件添加滾動功能
JTextArea組件只顯示無格式的文本,需要顯示格式化的文本時需要利用JEditorPane類 詳述與P338