每個組件都有三要素:
- 內容,例如,按鈕的狀態(是否按下)或者文本框中的文本
- 外觀顯示(顏色、尺寸等)
- 行為(對事件的反應)
模型——視圖——控制器(MVC)模式實現三個獨立的類:
- 模型——存儲內容
- 視圖——顯示內容
- 控制器——處理用戶輸入
模型——視圖——控制器模式的一點優點是一個模型可以有多個視圖,其中每個視圖可以顯示完整內容的不同部分或不同方面。
使用setColumns方法改變了一個文本框的大小以后,以需要調用包容該文本框的容器的validate方法。
textField.setColumns(10);
panel.validate();
validate()方法會重新計算容器內所有組件的大小,并且對它們重新布局。使用完validate()方法以后,布局管理器會重新繪制容器,然后就可以看到改變尺寸后的文本框。
通常,不可能通過過濾器避免所有的無效字符串。
過濾器的另外一個用途就是把字符串中的所有字符變成大寫。這樣的過濾器很容易編寫,在過濾器的insertString和replace方法中,把要被插入的字符串轉換為大寫的,然后調用超類方法。
你可以給任何JComponent附加檢驗器。如果組件失去焦點,那么就詢問檢驗器。如果檢驗器報告說組件的內容無效,該組件立即重新獲得焦點,用戶在提供其他輸入前強迫修改內容。
在Swing中,組件增加滾動條的通用機制是:把組件添加進一個滾動窗格中。
標簽是容納文本的組件。這種組件沒有修飾(例如,沒有邊界),它們也不響應用戶輸入,你可以使用一個標簽來標識組件。給組件設置標簽的方法如下:
- 使用正確的文本構造一個JLabel組件。
- 把該標簽組件放置到同需要標識的組件足夠近的地方,這樣用戶能看到該標簽標識了哪個組件。
從J2SE1.3開始,按鈕、標簽以及菜單項中不僅可以無格式的文本,還可以使用HTML文本。注意,第一個使用HTML標簽的組件需要延遲一段時間才能顯示出來,這是因為必須加載相當復雜的HTML翻譯代碼。