JavaTM 2 Platform
Standard Ed. 6

javax.swing.text
類別 InternationalFormatter

java.lang.Object
  繼承者 javax.swing.JFormattedTextField.AbstractFormatter
      繼承者 javax.swing.text.DefaultFormatter
          繼承者 javax.swing.text.InternationalFormatter
所有已實作的介面:
Serializable, Cloneable
直接已知子類別:
DateFormatter, NumberFormatter

public class InternationalFormatter
extends DefaultFormatter

InternationalFormatter 擴展 DefaultFormatter,使用 java.text.Format 的實例處理往返於 String 的轉換。

如果 getAllowsInvalid() 為 false,這將要求 Format 在每次編輯時格式化當前文本。

可以通過 setMinimumsetMaximum 方法指定最小值和最大值。為使此值生效,必須比較 stringToValue 返回的值和通過 Comparable 介面得到的最小值/最大值。

配置 FormatInternationalFormatter 時一定要仔細,因為有可能造成某些值無法輸入的情形。假定日期格式 'M/d/yy'(一種由 setAllowsInvalid(false) 決定總是有效的 InternationalFormatter)處於改寫網要 (setOverwriteMode(true)) 且日期為 7/1/99。在此情況下,使用者將不能輸入兩位數月份或某月的兩位數日期。要避免此現象,該格式應該為 'MM/dd/yy'。

如果 InternationalFormatter 配置為只允許有效值 (setAllowsInvalid(false)),則每次有效編輯都會導致 JFormattedTextField 的文本根據 Format 全部重新設置。鼠標位置也將隨著對結果 String 的文字值字元的添加/刪除而調整。

InternationalFormatterstringToValue 行為與 DefaultTextFormatter 稍有不同,它可以執行以下操作:

  1. setFormat 指定的 Format 上調用 parseObject
  2. 如果針對一些值設置了某個 Class (setValueClass),則會調用父級類別實作,以便將 parseObject 返回的值轉換為適當的類別。
  3. 如果尚未拋出 ParseException,並且該值不在最小值/最大值之間,則拋出 ParseException
  4. 返回該值。
InternationalFormatter 以此方式實作 stringToValue,所以可以指定一個 Format 可能返回的替代 Class。

警告:此類別的已序列化物件與以後的 Swing 版本不相容。當前序列化支持適用於短期存儲或運行相同 Swing 版本的應用程序之間的 RMI。從 1.4 版本開始,已在 java.beans 套件中添加了支持所有 JavaBeansTM 長期存儲的功能。請參見 XMLEncoder

從以下版本開始:
1.4
另請參見:
Format, Comparable

建構子摘要
InternationalFormatter()
          創建一個不帶指定 FormatInternationalFormatter
InternationalFormatter(Format format)
          創建一個具有指定 Format 實例的 InternationalFormatter
 
方法摘要
 Object clone()
          創建該 DefaultFormatter 的一個副本。
protected  Action[] getActions()
          如果 getSupportsIncrement 返回 true,則這將返回兩個適合增加/減少該值的 Action。
 Format.Field[] getFields(int offset)
          返回與 offset 處的文本相關的 Format.Field 常數。
 Format getFormat()
          返回指示可以編輯和顯示的合法值的格式。
 Comparable getMaximum()
          返回最大允許值。
 Comparable getMinimum()
          返回最小允許值。
 void install(JFormattedTextField ftf)
          將 DefaultFormatter 安裝到特定的 JFormattedTextField 上。
 void setFormat(Format format)
          設置指示可以編輯和顯示的合法值的格式。
 void setMaximum(Comparable max)
          設置最大允許值。
 void setMinimum(Comparable minimum)
          設置最小允許值。
 Object stringToValue(String text)
          返回 String textObject 表示形式。
 String valueToString(Object value)
          返回 Object value 的 String 表示形式。
 
從類別 javax.swing.text.DefaultFormatter 繼承的方法
getAllowsInvalid, getCommitsOnValidEdit, getDocumentFilter, getNavigationFilter, getOverwriteMode, getValueClass, setAllowsInvalid, setCommitsOnValidEdit, setOverwriteMode, setValueClass
 
從類別 javax.swing.JFormattedTextField.AbstractFormatter 繼承的方法
getFormattedTextField, invalidEdit, setEditValid, uninstall
 
從類別 java.lang.Object 繼承的方法
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

InternationalFormatter

public InternationalFormatter()
創建一個不帶指定 FormatInternationalFormatter


InternationalFormatter

public InternationalFormatter(Format format)
創建一個具有指定 Format 實例的 InternationalFormatter

參數:
format - 用於往返於 String 轉換的 Format 實例
方法詳細資訊

setFormat

public void setFormat(Format format)
設置指示可以編輯和顯示的合法值的格式。

參數:
format - 用於往返 String 轉換的 Format 實例

getFormat

public Format getFormat()
返回指示可以編輯和顯示的合法值的格式。

返回:
用於往返 String 轉換的 Format 實例

setMinimum

public void setMinimum(Comparable minimum)
設置最小允許值。如果尚未指定 valueClass,且 minimum 為非 null,則 valueClass 將被設置為 minimum 類別的值類別。

參數:
minimum - 可以輸入的最小合法值
另請參見:
DefaultFormatter.setValueClass(java.lang.Class)

getMinimum

public Comparable getMinimum()
返回最小允許值。

返回:
可以輸入的最小合法值

setMaximum

public void setMaximum(Comparable max)
設置最大允許值。如果尚未指定 valueClass,且 max 為非 null,則將 valueClass 設置為 max 類別的值。

參數:
max - 可以輸入的最大合法值
另請參見:
DefaultFormatter.setValueClass(java.lang.Class)

getMaximum

public Comparable getMaximum()
返回最大允許值。

返回:
可以輸入的最大合法值

install

public void install(JFormattedTextField ftf)
DefaultFormatter 安裝到特定的 JFormattedTextField 上。這將調用 valueToString,將 JFormattedTextField 中的當前值轉換為 String。此方法稍後將會將 getActions 返回的 ActiongetDocumentFilter 返回的 DocumentFiltergetNavigationFilter 返回的 NavigationFilter 安裝到 JFormattedTextField 上。

如果子類別希望在 JFormattedTextField 上安裝其他偵聽器,則通常只需要覆寫此方法。

如果在將當前值轉換為 String 時存在 ParseException,則這會將文本設置為空 String,並將 JFormattedTextField 標記為正處在無效狀態。

儘管這是一個公共方法,但通常僅供 JFormattedTextField 的子類別使用。當值發生更改,或內部狀態發生更改時,JFormattedTextField 將在適當的時候調用此方法。

覆寫:
類別 DefaultFormatter 中的 install
參數:
ftf - 要格式化的 JFormattedTextField,可能為 null,指示未從當前的 JFormattedTextField 安裝。

valueToString

public String valueToString(Object value)
                     throws ParseException
返回 Object value 的 String 表示形式。此方法會在當前 Format 上調用 format

覆寫:
類別 DefaultFormatter 中的 valueToString
參數:
value - 要轉換的值
返回:
值的 String 表示形式
拋出:
ParseException - 如果在轉換時發生錯誤

stringToValue

public Object stringToValue(String text)
                     throws ParseException
返回 String textObject 表示形式。

覆寫:
類別 DefaultFormatter 中的 stringToValue
參數:
text - 要轉換的 String
返回:
文本的 Object 表示形式
拋出:
ParseException - 如果轉換時發生錯誤

getFields

public Format.Field[] getFields(int offset)
返回與 offset 處的文本相關的 Format.Field 常數。如果 offset 不是當前文本中的有效位置,這將返回一個空陣列。

參數:
offset - 要檢查文本的偏移量
返回:
與給定位置的文本相關的 Format.Field 常數。

clone

public Object clone()
             throws CloneNotSupportedException
創建該 DefaultFormatter 的一個副本。

覆寫:
類別 DefaultFormatter 中的 clone
返回:
DefaultFormatter 的副本
拋出:
CloneNotSupportedException - 如果物件的類別不支持 Cloneable 介面,則覆寫 clone 方法的子類別也會拋出此異常,以指示無法複製某個實例。
另請參見:
Cloneable

getActions

protected Action[] getActions()
如果 getSupportsIncrement 返回 true,則這將返回兩個適合增加/減少該值的 Action。

覆寫:
類別 JFormattedTextField.AbstractFormatter 中的 getActions
返回:
要在 JFormattedTextField 上安裝的 Action 陣列

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only