JavaTM 2 Platform
Standard Ed. 6

javax.swing
類別 JSpinner

java.lang.Object
  繼承者 java.awt.Component
      繼承者 java.awt.Container
          繼承者 javax.swing.JComponent
              繼承者 javax.swing.JSpinner
所有已實作的介面:
ImageObserver, MenuContainer, Serializable, Accessible

public class JSpinner
extends JComponent
implements Accessible

讓使用者從一個有序序列中選擇一個數字或者一個物件值的單行輸入欄位。Spinner 通常提供一對帶小箭頭的按鈕以便逐步遍歷序列元素。鍵盤的向上/向下方向鍵也可循環遍歷元素。也允許使用者在 spinner 中直接輸入合法值。儘管組合框提供了相似的功能,但因為 spinner 不要求可隱藏重要資料的下拉列表,所以有時它也成為首要選擇。

JSpinner 序列的值由其 SpinnerModel 定義。此 model 可指定為建構子的參數,並且可通過 model 屬性進行更改。提供了針對某些常見型別的 SpinnerModel 類別:SpinnerListModelSpinnerNumberModelSpinnerDateModel

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

從以下版本開始:
1.4
另請參見:
SpinnerModel, AbstractSpinnerModel, SpinnerListModel, SpinnerNumberModel, SpinnerDateModel, JFormattedTextField

巢狀類別摘要
protected  class JSpinner.AccessibleJSpinner
          AccessibleJSpinner 實作 JSpinner 類別的可存取性支持。
static class JSpinner.DateEditor
          其模型為 SpinnerDateModelJSpinner 編輯器。
static class JSpinner.DefaultEditor
          一個針對非常特殊編輯器的簡單基礎類別,該類別在 JFormattedTextField 中顯示模型的當前值的只讀視圖。
static class JSpinner.ListEditor
          其模型為 SpinnerListModelJSpinner 編輯器。
static class JSpinner.NumberEditor
          其模型為 SpinnerNumberModelJSpinner 編輯器。
 
從類別 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()
          將一個其源為此 JSpinnerChangeEvent 發送到每個 ChangeListener
 AccessibleContext getAccessibleContext()
          獲取此 JSpinnerAccessibleContext
 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 屬性。
 
從類別 javax.swing.JComponent 繼承的方法
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
從類別 java.awt.Container 繼承的方法
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
從類別 java.awt.Component 繼承的方法
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

建構子詳細資訊

JSpinner

public JSpinner(SpinnerModel model)
建構具有一對 next/previous 按鈕和 SpinnerModel 編輯器的完整 spinner。


JSpinner

public JSpinner()
建構一個 spinner,使其具有初始值為 0 並且無任何最小值或者最大值限制的 Integer SpinnerNumberModel

方法詳細資訊

getUI

public SpinnerUI getUI()
返回呈現此元件的外觀 (L&F) 物件。

返回:
呈現此元件的 SpinnerUI 物件

setUI

public void setUI(SpinnerUI ui)
設置呈現此元件的外觀 (L&F) 物件。

參數:
ui - SpinnerUI L&F 物件
另請參見:
UIDefaults.getUI(javax.swing.JComponent)

getUIClassID

public String getUIClassID()
返回用於建構呈現此元件外觀 (L&F) 類別的名稱的後綴。

覆寫:
類別 JComponent 中的 getUIClassID
返回:
字元串 "SpinnerUI"
另請參見:
JComponent.getUIClassID(), UIDefaults.getUI(javax.swing.JComponent)

updateUI

public void updateUI()
用取自當前外觀的值重設 UI 屬性。

覆寫:
類別 JComponent 中的 updateUI
另請參見:
UIManager.getUI(javax.swing.JComponent)

createEditor

protected JComponent createEditor(SpinnerModel model)
此方法由建構子調用,以創建顯示序列當前值的 JComponent。編輯器也可能允許使用者直接輸入序列中的元素。編輯器必須偵聽 model 上的 ChangeEvents,並且讓顯示的值與模型的值保持同步。

子類別可能覆寫此方法以便添加對新 SpinnerModel 類別的支持。作為一種選擇,使用者可只替換此處使用 setEditor 方法創建的編輯器。從模型型別到編輯器的預設映射是:

參數:
model - getModel 的值
返回:
顯示序列當前值的元件
另請參見:
getModel(), setEditor(javax.swing.JComponent)

setModel

public void setModel(SpinnerModel model)
更改表示此 spinner 值的模型。如果沒有顯式地設置編輯器屬性,將在調用 "model"PropertyChangeEvent 後(隱式地)設置編輯器屬性。編輯器屬性設置為 createEditor 所返回的值,如:
 setEditor(createEditor(model));
 

參數:
model - 新的 SpinnerModel
拋出:
IllegalArgumentException - 如果 model 為 null
另請參見:
getModel(), getEditor(), setEditor(javax.swing.JComponent)

getModel

public SpinnerModel getModel()
返回定義此 spinner 值序列的 SpinnerModel

返回:
模型屬性的值
另請參見:
setModel(javax.swing.SpinnerModel)

getValue

public Object getValue()
返回模型的當前值,通常此值是 editor 所顯示的值。如果使用者已更改 editor 所顯示的值,則 model 的值可能與 editor 的值不一樣,關於如何處理這種情況的範例,請參閱類別級別 javadoc。

此方法只委託給 model。它等效於:

 getModel().getValue()
 

另請參見:
setValue(java.lang.Object), SpinnerModel.getValue()

setValue

public void setValue(Object value)
更改模型的當前值,通常此值是 editor 所顯示的值。如果 SpinnerModel 的實作不支持指定的值,則拋出 IllegalArgumentException

此方法只委託給 model。它等效於:

 getModel().setValue(value)
 

拋出:
IllegalArgumentException - 如果不允許為 value
另請參見:
getValue(), SpinnerModel.setValue(java.lang.Object)

getNextValue

public Object getNextValue()
返回序列中由 getValue() 所返回的物件之後的物件。如果已達到序列結尾,則返回 null。調用此方法不影響 value

此方法只委託給 model。它等效於:

 getModel().getNextValue()
 

返回:
下一個有效值,如果不存在,則返回 null
另請參見:
getValue(), getPreviousValue(), SpinnerModel.getNextValue()

addChangeListener

public void addChangeListener(ChangeListener listener)
為每次發生模型更改時要通知的列表添加偵聽器。傳遞到 ChangeListenersChangeEvents 源將是此 JSpinner。還要注意到替換模型將不會影響直接添加到 JSpinner 的偵聽器。應用程序可以直接向模型添加偵聽器。在這種情況下,事件源將是 SpinnerModel

參數:
listener - 要添加的 ChangeListener
另請參見:
removeChangeListener(javax.swing.event.ChangeListener), getModel()

removeChangeListener

public void removeChangeListener(ChangeListener listener)
從此 spinne 中移除 ChangeListener

參數:
listener - 要移除的 ChangeListener
另請參見:
fireStateChanged(), addChangeListener(javax.swing.event.ChangeListener)

getChangeListeners

public ChangeListener[] getChangeListeners()
返回一個通過 addChangeListener() 方法添加到此 JSpinner 的所有 ChangeListener 的陣列。

返回:
所有被添加的 ChangeListener,如果沒有添加任何偵聽器,則返回空陣列
從以下版本開始:
1.4

fireStateChanged

protected void fireStateChanged()
將一個其源為此 JSpinnerChangeEvent 發送到每個 ChangeListener。當向此 spinner 添加一個 ChangeListener 時,則每一次從模型接收到 ChangeEvent 都會調用此方法。

另請參見:
addChangeListener(javax.swing.event.ChangeListener), removeChangeListener(javax.swing.event.ChangeListener), EventListenerList

getPreviousValue

public Object getPreviousValue()
返回序列中由 getValue() 所返回物件之前的物件。如果已達到序列末尾,則返回 null。調用此方法不影響 value

此方法只委託給 model。它等效於:

 getModel().getPreviousValue()
 

返回:
前一個有效值;如果不存在有效值,則返回 null
另請參見:
getValue(), getNextValue(), SpinnerModel.getPreviousValue()

setEditor

public void setEditor(JComponent editor)
更改顯示 SpinnerModel 當前值的 JComponent。此方法負責將原編輯器從模型斷開 並連接新的編輯器。這可能意味著將從模型中或者 spinner 本身移除原編輯器的 ChangeListener,並為新編輯器添加一個偵聽器。

參數:
editor - 新編輯器
拋出:
IllegalArgumentException - 如果編輯器為 null
另請參見:
getEditor(), createEditor(javax.swing.SpinnerModel), getModel()

getEditor

public JComponent getEditor()
返回顯示和潛在更改模型值的元件。

返回:
顯示和潛在更改模型值的元件
另請參見:
setEditor(javax.swing.JComponent), createEditor(javax.swing.SpinnerModel)

commitEdit

public void commitEdit()
                throws ParseException
將當前編輯的值提交給 SpinnerModel

如果此編輯器是 DefaultEditor 的一個實例,調用會轉發給編輯器;否則不執行任何操作。

拋出:
ParseException - 如果當前編輯的值不能提交。

getAccessibleContext

public AccessibleContext getAccessibleContext()
獲取此 JSpinnerAccessibleContext

指定者:
介面 Accessible 中的 getAccessibleContext
覆寫:
類別 JComponent 中的 getAccessibleContext
返回:
JSpinnerAccessibleContext
從以下版本開始:
1.5

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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