|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.JSpinner
public class JSpinner
讓使用者從一個有序序列中選擇一個數字或者一個物件值的單行輸入欄位。Spinner 通常提供一對帶小箭頭的按鈕以便逐步遍歷序列元素。鍵盤的向上/向下方向鍵也可循環遍歷元素。也允許使用者在 spinner 中直接輸入合法值。儘管組合框提供了相似的功能,但因為 spinner 不要求可隱藏重要資料的下拉列表,所以有時它也成為首要選擇。
JSpinner
序列的值由其 SpinnerModel
定義。此 model
可指定為建構子的參數,並且可通過 model
屬性進行更改。提供了針對某些常見型別的 SpinnerModel
類別:SpinnerListModel
、SpinnerNumberModel
和 SpinnerDateModel
。
JSpinner
具有一個負責顯示和潛在地更改當前元素或者模型 value 的惟一子元件,被稱為 editor
。此編輯器由 JSpinner
的建構子創建,並且可通過 editor
屬性進行更改。JSpinner
的編輯器通過偵聽 ChangeEvent
而與模型保持同步。如果使用者更改了 editor
所顯示的值,則有可能 model
的值與 editor
的值不一樣。為保證 model
與編輯器具有相同的值,請使用 commitEdit
方法,例如:
try { spinner.commitEdit(); } catch (ParseException pe) {{ // Edited value is invalid, spinner.getValue() will return // the last valid value, you could revert the spinner to show that: JComponent editor = spinner.getEditor() if (editor instanceof DefaultEditor) { ((DefaultEditor)editor).getTextField().setValue(spinner.getValue(); } // reset the value to some known value: spinner.setValue(fallbackValue); // or treat the last valid value as the current, in which // case you don't need to do anything. } return spinner.getValue();
有關使用微調器的資訊和範例,請參閱 The Java Tutorial 中的 How to Use Spinners 一節。
警告:Swing 不是執行緒安全的。有關更多資訊,請參閱 Swing's Threading Policy。
警告:此類別的序列化物件與以後的 Swing 版本不相容。當前序列化支持適用於短期存儲,或適用於在運行相同 Swing 版本的應用程序之間進行 RMI(Remote Method Invocation,遠端方法調用)。從 1.4 版本開始,已在 java.beans
套件中添加了支持所有 JavaBeansTM 長期存儲的功能。請參見 XMLEncoder
。
SpinnerModel
,
AbstractSpinnerModel
,
SpinnerListModel
,
SpinnerNumberModel
,
SpinnerDateModel
,
JFormattedTextField
巢狀類別摘要 | |
---|---|
protected class |
JSpinner.AccessibleJSpinner
AccessibleJSpinner 實作 JSpinner 類別的可存取性支持。 |
static class |
JSpinner.DateEditor
其模型為 SpinnerDateModel 的 JSpinner 編輯器。 |
static class |
JSpinner.DefaultEditor
一個針對非常特殊編輯器的簡單基礎類別,該類別在 JFormattedTextField 中顯示模型的當前值的只讀視圖。 |
static class |
JSpinner.ListEditor
其模型為 SpinnerListModel 的 JSpinner 編輯器。 |
static class |
JSpinner.NumberEditor
其模型為 SpinnerNumberModel 的 JSpinner 編輯器。 |
從類別 javax.swing.JComponent 繼承的巢狀類別/介面 |
---|
JComponent.AccessibleJComponent |
從類別 java.awt.Container 繼承的巢狀類別/介面 |
---|
Container.AccessibleAWTContainer |
從類別 java.awt.Component 繼承的巢狀類別/介面 |
---|
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy |
欄位摘要 |
---|
從類別 javax.swing.JComponent 繼承的欄位 |
---|
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW |
從類別 java.awt.Component 繼承的欄位 |
---|
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT |
從介面 java.awt.image.ImageObserver 繼承的欄位 |
---|
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH |
建構子摘要 | |
---|---|
JSpinner()
建構一個 spinner,使其具有初始值為 0 並且無任何最小值或者最大值限制的 Integer SpinnerNumberModel 。 |
|
JSpinner(SpinnerModel model)
建構具有一對 next/previous 按鈕和 SpinnerModel 編輯器的完整 spinner。 |
方法摘要 | |
---|---|
void |
addChangeListener(ChangeListener listener)
為每次發生模型更改時要通知的列表添加偵聽器。 |
void |
commitEdit()
將當前編輯的值提交給 SpinnerModel 。 |
protected JComponent |
createEditor(SpinnerModel model)
此方法由建構子調用,以創建顯示序列當前值的 JComponent 。 |
protected void |
fireStateChanged()
將一個其源為此 JSpinner 的 ChangeEvent 發送到每個 ChangeListener 。 |
AccessibleContext |
getAccessibleContext()
獲取此 JSpinner 的 AccessibleContext |
ChangeListener[] |
getChangeListeners()
返回一個通過 addChangeListener() 方法添加到此 JSpinner 的所有 ChangeListener 的陣列。 |
JComponent |
getEditor()
返回顯示和潛在更改模型值的元件。 |
SpinnerModel |
getModel()
返回定義此 spinner 值序列的 SpinnerModel 。 |
Object |
getNextValue()
返回序列中由 getValue() 所返回的物件之後的物件。 |
Object |
getPreviousValue()
返回序列中由 getValue() 所返回物件之前的物件。 |
SpinnerUI |
getUI()
返回呈現此元件的外觀 (L&F) 物件。 |
String |
getUIClassID()
返回用於建構呈現此元件外觀 (L&F) 類別的名稱的後綴。 |
Object |
getValue()
返回模型的當前值,通常此值是 editor 所顯示的值。 |
void |
removeChangeListener(ChangeListener listener)
從此 spinne 中移除 ChangeListener 。 |
void |
setEditor(JComponent editor)
更改顯示 SpinnerModel 當前值的 JComponent 。 |
void |
setModel(SpinnerModel model)
更改表示此 spinner 值的模型。 |
void |
setUI(SpinnerUI ui)
設置呈現此元件的外觀 (L&F) 物件。 |
void |
setValue(Object value)
更改模型的當前值,通常此值是 editor 所顯示的值。 |
void |
updateUI()
用取自當前外觀的值重設 UI 屬性。 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
建構子詳細資訊 |
---|
public JSpinner(SpinnerModel model)
SpinnerModel
編輯器的完整 spinner。
public JSpinner()
Integer SpinnerNumberModel
。
方法詳細資訊 |
---|
public SpinnerUI getUI()
SpinnerUI
物件public void setUI(SpinnerUI ui)
ui
- SpinnerUI
L&F 物件UIDefaults.getUI(javax.swing.JComponent)
public String getUIClassID()
JComponent
中的 getUIClassID
JComponent.getUIClassID()
,
UIDefaults.getUI(javax.swing.JComponent)
public void updateUI()
JComponent
中的 updateUI
UIManager.getUI(javax.swing.JComponent)
protected JComponent createEditor(SpinnerModel model)
JComponent
。編輯器也可能允許使用者直接輸入序列中的元素。編輯器必須偵聽 model
上的 ChangeEvents
,並且讓顯示的值與模型的值保持同步。
子類別可能覆寫此方法以便添加對新 SpinnerModel
類別的支持。作為一種選擇,使用者可只替換此處使用 setEditor
方法創建的編輯器。從模型型別到編輯器的預設映射是:
SpinnerNumberModel => JSpinner.NumberEditor
SpinnerDateModel => JSpinner.DateEditor
SpinnerListModel => JSpinner.ListEditor
JSpinner.DefaultEditor
model
- getModel 的值
getModel()
,
setEditor(javax.swing.JComponent)
public void setModel(SpinnerModel model)
"model"
的 PropertyChangeEvent
後(隱式地)設置編輯器屬性。編輯器屬性設置為 createEditor
所返回的值,如:
setEditor(createEditor(model));
model
- 新的 SpinnerModel
IllegalArgumentException
- 如果 model 為 null
getModel()
,
getEditor()
,
setEditor(javax.swing.JComponent)
public SpinnerModel getModel()
SpinnerModel
。
setModel(javax.swing.SpinnerModel)
public Object getValue()
editor
所顯示的值。如果使用者已更改 editor
所顯示的值,則 model
的值可能與 editor
的值不一樣,關於如何處理這種情況的範例,請參閱類別級別 javadoc。
此方法只委託給 model
。它等效於:
getModel().getValue()
setValue(java.lang.Object)
,
SpinnerModel.getValue()
public void setValue(Object value)
editor
所顯示的值。如果 SpinnerModel
的實作不支持指定的值,則拋出 IllegalArgumentException
。
此方法只委託給 model
。它等效於:
getModel().setValue(value)
IllegalArgumentException
- 如果不允許為 value
getValue()
,
SpinnerModel.setValue(java.lang.Object)
public Object getNextValue()
getValue()
所返回的物件之後的物件。如果已達到序列結尾,則返回 null
。調用此方法不影響 value
。
此方法只委託給 model
。它等效於:
getModel().getNextValue()
null
getValue()
,
getPreviousValue()
,
SpinnerModel.getNextValue()
public void addChangeListener(ChangeListener listener)
ChangeListeners
的 ChangeEvents
源將是此 JSpinner
。還要注意到替換模型將不會影響直接添加到 JSpinner 的偵聽器。應用程序可以直接向模型添加偵聽器。在這種情況下,事件源將是 SpinnerModel
。
listener
- 要添加的 ChangeListener
removeChangeListener(javax.swing.event.ChangeListener)
,
getModel()
public void removeChangeListener(ChangeListener listener)
ChangeListener
。
listener
- 要移除的 ChangeListener
fireStateChanged()
,
addChangeListener(javax.swing.event.ChangeListener)
public ChangeListener[] getChangeListeners()
ChangeListener
的陣列。
ChangeListener
,如果沒有添加任何偵聽器,則返回空陣列protected void fireStateChanged()
JSpinner
的 ChangeEvent
發送到每個 ChangeListener
。當向此 spinner 添加一個 ChangeListener
時,則每一次從模型接收到 ChangeEvent
都會調用此方法。
addChangeListener(javax.swing.event.ChangeListener)
,
removeChangeListener(javax.swing.event.ChangeListener)
,
EventListenerList
public Object getPreviousValue()
getValue()
所返回物件之前的物件。如果已達到序列末尾,則返回 null
。調用此方法不影響 value
。
此方法只委託給 model
。它等效於:
getModel().getPreviousValue()
null
getValue()
,
getNextValue()
,
SpinnerModel.getPreviousValue()
public void setEditor(JComponent editor)
SpinnerModel
當前值的 JComponent
。此方法負責將原編輯器從模型斷開 並連接新的編輯器。這可能意味著將從模型中或者 spinner 本身移除原編輯器的 ChangeListener
,並為新編輯器添加一個偵聽器。
editor
- 新編輯器
IllegalArgumentException
- 如果編輯器為 null
getEditor()
,
createEditor(javax.swing.SpinnerModel)
,
getModel()
public JComponent getEditor()
setEditor(javax.swing.JComponent)
,
createEditor(javax.swing.SpinnerModel)
public void commitEdit() throws ParseException
SpinnerModel
。
如果此編輯器是 DefaultEditor
的一個實例,調用會轉發給編輯器;否則不執行任何操作。
ParseException
- 如果當前編輯的值不能提交。public AccessibleContext getAccessibleContext()
JSpinner
的 AccessibleContext
Accessible
中的 getAccessibleContext
JComponent
中的 getAccessibleContext
JSpinner
的 AccessibleContext
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。