@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
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
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
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
从以下版本开始: