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