@JavaBean(defaultProperty="UI",
          description="A single line input field that lets the user select a number or an object value from an ordered set.")
public class JSpinner
extends JComponent
implements Accessible
单行输入字段,允许用户从有序序列中选择数字或对象值。 旋转器通常提供一对微小的箭头按钮,用于单步执行序列的元素。 键盘上/下箭头键也循环显示元素。 也可以允许用户直接在微调器中键入(合法)值。 虽然组合框提供类似的功能,但有时候首选旋转器是因为它们不需要可以隐藏重要数据的下拉列表。

JSpinner 的序列值由其 SpinnerModel 定义。 可以将 model 指定为构造函数参数,并使用 model 属性进行更改。 SpinnerModel 提供类的一些常见类型: SpinnerListModel SpinnerNumberModel SpinnerDateModel

JSpinner 有一个子组件,负责显示和可能更改模型的当前元素或 ,称为 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(); 

有关使用微调器的信息和示例,请参阅 “Java教程” How to Use Spinners 部分

警告: Swing不是线程安全的。 有关更多信息,请参阅 Swing's Threading Policy

警告: 此类的序列化对象与以后的Swing版本不兼容。 当前的序列化支持适用于运行相同版本Swing的应用程序之间的短期存储或RMI。 从1.4开始, java.beans 软件包中添加了对所有JavaBeans java.beans 长期存储的支持。 请参阅 XMLEncoder

从以下版本开始: 另请参见: SpinnerModel AbstractSpinnerModel SpinnerListModel SpinnerNumberModel SpinnerDateModel JFormattedTextField Serialized Form

声明方法的类 javax.swing. JComponent

addAncestorListener , addNotify , addVetoableChangeListener , computeVisibleRect , contains , createToolTip , disable , enable , 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 , isPaintingOrigin , 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 , 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 , 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 , 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 , requestFocus , requestFocus , requestFocusInWindow , resize , resize , setBounds , setBounds , setComponentOrientation , setCursor , setDropTarget , setFocusable , setFocusTraversalKeysEnabled , setIgnoreRepaint , setLocale , setLocation , setLocation , setMixingCutoutShape , setName , setSize , setSize , show , show , size , toString , transferFocus , transferFocusBackward , transferFocusUpCycle

声明方法的类 java.lang. Object

clone , equals , finalize , getClass , hashCode , notify , notifyAll , wait , wait , wait
  • createEditor

    protected JComponent createEditor​(SpinnerModel model)
    构造函数调用此方法以创建显示序列当前值的 JComponent 编辑器还可以允许用户直接输入序列的元素。 编辑器必须在 ChangeEvents model 并保持其显示的值与模型的值同步。

    子类可以重写此方法以添加对新 SpinnerModel 类的支持。 或者,可以使用 setEditor 方法替换此处创建的编辑器。 从模型类型到编辑器的默认映射是:

  • SpinnerNumberModel => JSpinner.NumberEditor
  • SpinnerDateModel => JSpinner.DateEditor
  • SpinnerListModel => JSpinner.ListEditor
  • 所有其他 => JSpinner.DefaultEditor
  • setModel

    @BeanProperty(visualUpdate=true,
                  description="Model that represents the value of this spinner.")
    public void setModel​(SpinnerModel model)
    更改表示此微调器值的模型。 如果尚未显式设置编辑器属性,则在触发 "model" PropertyChangeEvent 之后(隐式)设置编辑器属性。 editor属性设置为 createEditor 返回的值,如下所示:
      setEditor(createEditor(model)); 
    model - 新的 SpinnerModel IllegalArgumentException - 如果型号是 另请参见: getModel() getEditor() setEditor(javax.swing.JComponent) 返回模型的当前值,通常此值由 editor 显示。 如果用户已经改变由显示的值 editor 有可能为 model 的价值,从该的不同 editor ,请参阅类级别的javadoc对于如何处理这方面的例子。

    此方法仅委托给 model 它相当于:

      getModel().getValue() 
    模型的当前值 另请参见: setValue(java.lang.Object) SpinnerModel.getValue() 更改模型的当前值,通常此值由 editor 显示。 如果 SpinnerModel 实现不支持指定的值,则抛出 IllegalArgumentException

    此方法只是委托给 model 它相当于:

      getModel().setValue(value) 
    value - 微调器的新值 IllegalArgumentException - 如果不允许 value 另请参见: getValue() SpinnerModel.setValue(java.lang.Object)
  • addChangeListener

    public void addChangeListener​(ChangeListener listener)
    向每次发生模型更改时通知的列表添加侦听器。 ChangeEvents 发送到 ChangeListeners 的来源将是 JSpinner 另请注意,替换模型不会影响直接添加到JSpinner的侦听器。 应用程序可以直接向模型添加侦听器。 在这种情况下,事件的来源将是 SpinnerModel listener - 要添加的 ChangeListener 另请参见: removeChangeListener(javax.swing.event.ChangeListener) getModel()
  • removeChangeListener

    public void removeChangeListener​(ChangeListener listener)
    从此微调器中删除 ChangeListener listener - 要删除的 ChangeListener 另请参见: fireStateChanged() addChangeListener(javax.swing.event.ChangeListener)
  • getChangeListeners

    @BeanProperty(bound=false)
    public ChangeListener[] getChangeListeners()
    返回使用addChangeListener()添加到此JSpinner的所有 ChangeListener 的数组。 如果没有添加任何侦听器,则添加所有 ChangeListener 或空数组 从以下版本开始:
  • fireStateChanged

    protected void fireStateChanged()
    发送 ChangeEvent ,其来源为 JSpinner ,每个 ChangeListener ChangeListener 添加到微调器时,每次从模型接收到 ChangeEvent 时都会调用此方法。 另请参见: addChangeListener(javax.swing.event.ChangeListener) removeChangeListener(javax.swing.event.ChangeListener) EventListenerList
  • setEditor

    @BeanProperty(visualUpdate=true,
                  description="JComponent that displays the current value of the model")
    public void setEditor​(JComponent editor)
    更改显示 JComponent 当前值的 SpinnerModel 此方法的职责是将旧编辑器与模型 断开连接 并连接新编辑器。 这可能意味着从模型或微调器本身中删除旧编辑器 ChangeListener ,并为新编辑器添加一个编辑器。 editor - 新编辑 IllegalArgumentException - 如果编辑器是 另请参见: getEditor() createEditor(javax.swing.SpinnerModel) getModel()
  • getAccessibleContext

    @BeanProperty(bound=false)
    public AccessibleContext getAccessibleContext()
    AccessibleContext JSpinner Specified by: getAccessibleContext 在接口 Accessible getAccessibleContext 在类 Component AccessibleContext JSpinner 从以下版本开始:
  •