- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JSpinner
-
- All Implemented Interfaces:
-
ImageObserver
,MenuContainer
,Serializable
,Accessible
@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
。A
JSpinner
具有单个子组件,负责显示和潜在地更改模型的当前元素或值 ,这称为editor
。 编辑器由JSpinner
的构造函数创建,可以使用editor
属性更改。JSpinner
的编辑器通过监听ChangeEvent
s与模型保持同步。 如果用户已经改变由所述显示的值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版本开始,所有JavaBeans的长期存储支持已被添加到
java.beans
包中。 请参阅XMLEncoder
。- 从以下版本开始:
- 1.4
- 另请参见:
-
SpinnerModel
,AbstractSpinnerModel
,SpinnerListModel
,SpinnerNumberModel
,SpinnerDateModel
,JFormattedTextField
, Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class 描述 protected class
JSpinner.AccessibleJSpinner
AccessibleJSpinner
实现JSpinner
类的辅助功能支持。static class
JSpinner.DateEditor
一个JSpinner
的编辑器,其型号是SpinnerDateModel
。static class
JSpinner.DefaultEditor
更专业的编辑器的简单基类,可以使用JFormattedTextField
显示模型当前值的JFormattedTextField
。static class
JSpinner.ListEditor
一个JSpinner
的编辑器,其型号是SpinnerListModel
。static class
JSpinner.NumberEditor
一个JSpinner
的编辑器,其型号是SpinnerNumberModel
。-
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
-
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
-
-
Field Summary
-
Fields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
-
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
-
构造方法摘要
构造方法 Constructor 描述 JSpinner()
构造一个带有初始值为0的Integer SpinnerNumberModel
的旋转器,并且没有最小或最大限制。JSpinner(SpinnerModel model)
构造给定模型的旋转器。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 void
addChangeListener(ChangeListener listener)
将侦听器添加到每次发生模型更改时通知的列表。void
commitEdit()
将当前编辑的值提交到SpinnerModel
。protected JComponent
createEditor(SpinnerModel model)
该方法由构造函数调用来创建显示序列的当前值的JComponent
。protected void
fireStateChanged()
发送一个ChangeEvent
,其来源是这个JSpinner
,每个ChangeListener
。AccessibleContext
getAccessibleContext()
获得AccessibleContext
的JSpinner
ChangeListener[]
getChangeListeners()
返回使用addChangeListener()添加到此JSpinner的所有ChangeListener
的数组。JComponent
getEditor()
返回显示的组件,并可能更改模型的值。SpinnerModel
getModel()
返回定义该旋转序列值的SpinnerModel
。Object
getNextValue()
返回getValue()
返回的对象后面的序列中的对象。Object
getPreviousValue()
返回getValue()
返回的对象之前的序列中的对象。SpinnerUI
getUI()
返回渲染此组件的外观和感觉(L&F)对象。String
getUIClassID()
返回用于构造用于渲染此组件的外观(L&F)类的名称的后缀。Object
getValue()
返回模型的当前值,通常这个值由editor
显示。void
removeChangeListener(ChangeListener listener)
从此微调移除ChangeListener
。void
setEditor(JComponent editor)
更改显示JComponent
的当前值的SpinnerModel
。void
setModel(SpinnerModel model)
更改表示此微调器值的模型。void
setUI(SpinnerUI ui)
设置渲染此组件的外观和感觉(L&F)对象。void
setValue(Object value)
更改模型的当前值,通常该值由editor
显示。void
updateUI()
使用当前外观的值重置UI属性。-
Methods inherited from class 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, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, 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
-
Methods inherited from class 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
-
Methods inherited from class 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, hide, 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
-
-
-
-
构造方法详细信息
-
JSpinner
public JSpinner(SpinnerModel model)
构造给定模型的旋转器。 微调器具有一组前一个/下一个按钮,以及适用于该模型的编辑器。- 参数
-
model
- 新的微调器的模型 - 异常
-
NullPointerException
- 如果型号是null
-
JSpinner
public JSpinner()
构造一个带有初始值为0的Integer SpinnerNumberModel
的旋转器,并且没有最小或最大限制。
-
-
方法详细信息
-
getUI
public SpinnerUI getUI()
返回渲染此组件的外观和感觉(L&F)对象。- 重写:
-
getUI
在JComponent
- 结果
-
SpinnerUI
呈现此组件的对象
-
setUI
public void setUI(SpinnerUI ui)
设置渲染此组件的外观和感觉(L&F)对象。- 参数
-
ui
-SpinnerUI
L&F对象 - 另请参见:
-
UIDefaults.getUI(javax.swing.JComponent)
-
getUIClassID
@BeanProperty(bound=false) public String getUIClassID()
返回用于构造用于渲染此组件的外观(L&F)类的名称的后缀。- 重写:
-
getUIClassID
在JComponent
- 结果
- 字符串“SpinnerUI”
- 另请参见:
-
JComponent.getUIClassID()
,UIDefaults.getUI(javax.swing.JComponent)
-
updateUI
public void updateUI()
使用当前外观的值重置UI属性。
-
createEditor
protected JComponent createEditor(SpinnerModel model)
该方法由构造函数调用来创建显示序列的当前值的JComponent
。 编辑者还可以允许用户直接输入序列的元素。 编辑器必须侦听ChangeEvents
在model
,并保持它显示在同步与模型的值的值。子类可以覆盖此方法以添加对新的
SpinnerModel
类的支持。 或者,可以用setEditor
方法替换此处创建的编辑器。 从模型类型到编辑器的默认映射是:-
SpinnerNumberModel => JSpinner.NumberEditor
-
SpinnerDateModel => JSpinner.DateEditor
-
SpinnerListModel => JSpinner.ListEditor
- 所有其他 =>
JSpinner.DefaultEditor
- 参数
-
model
- getModel的值 - 结果
- 显示序列的当前值的组件
- 另请参见:
-
getModel()
,setEditor(javax.swing.JComponent)
-
-
setModel
@BeanProperty(visualUpdate=true, description="Model that represents the value of this spinner.") public void setModel(SpinnerModel model)
更改表示此微调器值的模型。 如果编辑器属性尚未被明确设置,编辑器属性(隐含地)设置为"model"
PropertyChangeEvent
已被触发。 编辑器属性设置为createEditor
返回的值,如:setEditor(createEditor(model));
- 参数
-
model
- 新的SpinnerModel
- 异常
-
IllegalArgumentException
- 如果型号是null
- 另请参见:
-
getModel()
,getEditor()
,setEditor(javax.swing.JComponent)
-
getModel
public SpinnerModel getModel()
返回定义该旋转序列值的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)
- 参数
-
value
- 微调器的新值 - 异常
-
IllegalArgumentException
- 如果不允许value
- 另请参见:
-
getValue()
,SpinnerModel.setValue(java.lang.Object)
-
getNextValue
@BeanProperty(bound=false) public Object getNextValue()
返回getValue()
返回的对象后面的序列中的对象。 如果序列的结尾已经到达,则返回null
。 调用此方法不影响value
。这个方法只是委托给
model
。 相当于:getModel().getNextValue()
- 结果
-
下一个合法值或
null
如果不存在 - 另请参见:
-
getValue()
,getPreviousValue()
,SpinnerModel.getNextValue()
-
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
或一个空数组,如果没有添加听众 - 从以下版本开始:
- 1.4
-
fireStateChanged
protected void fireStateChanged()
发送一个ChangeEvent
,其来源是这个JSpinner
,每个ChangeListener
。 当一个ChangeListener
已添加到微调器时,每次从模型接收到一个ChangeEvent
时,都会调用此方法。
-
getPreviousValue
@BeanProperty(bound=false) public Object getPreviousValue()
返回getValue()
返回的对象之前的序列中的对象。 如果序列的结尾已经到达,则返回null
。 调用此方法不影响value
。这种方法只是委托给
model
。 相当于:getModel().getPreviousValue()
- 结果
-
以前的合法价值或
null
如果不存在 - 另请参见:
-
getValue()
,getNextValue()
,SpinnerModel.getPreviousValue()
-
setEditor
@BeanProperty(visualUpdate=true, description="JComponent that displays the current value of the model") public void setEditor(JComponent editor)
更改显示JComponent
的当前值的SpinnerModel
。 这种方法有责任将旧的编辑器与模型断开连接 ,并连接新的编辑器。 这可能意味着从模型或微调器本身中删除旧的编辑器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
@BeanProperty(bound=false) public AccessibleContext getAccessibleContext()
获得AccessibleContext
的JSpinner
- Specified by:
-
getAccessibleContext
在接口Accessible
- 重写:
-
getAccessibleContext
在Component
- 结果
-
AccessibleContext
为JSpinner
- 从以下版本开始:
- 1.5
-
-