我們在做java gui開發的時候,有的時候需要對文本框中的内容進行限制,比如最大長度、轉換為大寫等。今天就為大家介紹一下該如何實作。
通過查閱jdk api,我們可以知道,在<code>jtextfield</code>中提供了<code>setdocument(document doc)</code>方法,用于将編輯器與一個文本文檔關聯。那麼我們就需要使用它啦。
<code>document</code>是一個接口,有如下幾個實作類:
abstractdocument
defaultstyleddocument
htmldocument
plaindocument
這裡我們需要使用的就是<code>plaindocument</code>,<code>plaindocument</code>維護無任何字元屬性的普通文檔。此文檔的預設元素結構是文本中的行的映射。由 getdefaultrootelement 傳回的 element 是行的映射,且每個子元素表示一行。此模型不維護任何字元級屬性,但每行都可以用一個任意的屬性集來标記。使用預設的根元素可以快速執行從行到偏移量和從偏移量到行的轉換。由編輯激發的 documentevent 的結構資訊将訓示行結構的更改。 預設的内容存儲管理是通過間隙緩沖區實作 (gapcontent) 執行的。如果編輯是連續的或叢集化的(正如常見的那樣),此操作支援對大型文檔的高效合理編輯。
在<code>plaindocument</code>中提供了<code>insertstring(int offs, string str, attributeset a)</code>,用于向文檔中插入某些内容,是以我們隻需要重寫該方法就可以了。
首先我們先來寫一個将輸入字元轉換為大寫的示例:
編寫測試方法:
是不是很簡單,接下來我們再來實作一個通過正則校驗輸入内容的文檔:
繼續編寫測試方法對其進行測試:
通過上面兩個示例,相信大家已經知道了如何限制輸入框輸入的内容了,在實際應用中,我們可以根據實際情況編寫我們自己的<code>plaindocument</code>。