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();
有关使用旋转器的信息和示例,请参阅How to Use Spinners “Java教程 ”中的一节。
警告: Swing不是线程安全的。 有关更多信息,请参阅Swing's Threading Policy 。
警告:此类的序列化对象与将来的Swing版本不兼容。 当前的序列化支持适用于运行相同版本的Swing的应用程序之间的短期存储或RMI。 从1.4开始,支持所有JavaBeans的长期存储已经添加到java.beans
包中。 请参阅XMLEncoder
。
SpinnerModel
, AbstractSpinnerModel
, SpinnerListModel
, SpinnerNumberModel
, SpinnerDateModel
, JFormattedTextField
Modifier and Type | Class and Description |
---|---|
protected class |
JSpinner.AccessibleJSpinner
AccessibleJSpinner 实现
JSpinner 类的辅助功能支持。
|
static class |
JSpinner.DateEditor
一个
JSpinner 的编辑器,其型号是
SpinnerDateModel 。
|
static class |
JSpinner.DefaultEditor
更专业的编辑器的简单基类,用JFormattedTextField显示模型当前值的
JFormattedTextField 。
|
static class |
JSpinner.ListEditor
一个
JSpinner 为
JSpinner 的模特是
SpinnerListModel 。
|
static class |
JSpinner.NumberEditor
一个
JSpinner 的编辑器,其型号是
SpinnerNumberModel 。
|
JComponent.AccessibleJComponent
Container.AccessibleAWTContainer
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
Constructor and Description |
---|
JSpinner()
构造一个旋涂器
Integer SpinnerNumberModel 使用初始值0并且没有最低或最高限度。
|
JSpinner(SpinnerModel model)
构造给定模型的旋转器。
|
Modifier and Type | Method and Description |
---|---|
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属性。
|
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
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, 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, 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, transferFocusBackward, transferFocusUpCycle
public JSpinner(SpinnerModel model)
NullPointerException
- 如果型号是
null
public JSpinner()
Integer SpinnerNumberModel
使用初始值0并且没有最低或最高限度。
public SpinnerUI getUI()
SpinnerUI
对象
public void setUI(SpinnerUI ui)
ui
-
SpinnerUI
L&F对象
UIDefaults.getUI(javax.swing.JComponent)
public String getUIClassID()
getUIClassID
在
JComponent
JComponent.getUIClassID()
,
UIDefaults.getUI(javax.swing.JComponent)
public void updateUI()
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)
public void setModel(SpinnerModel model)
"model"
PropertyChangeEvent
已被触发。
编辑器属性设置为createEditor
返回的值,如:
setEditor(createEditor(model));
model
- 全新
SpinnerModel
IllegalArgumentException
- 如果型号是
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()
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)
ChangeEvents
的来源发送到ChangeListeners
将是这个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()
ChangeEvent
,其来源是这JSpinner
,每个ChangeListener
。
当一个ChangeListener
已添加到微调器时,每次从模型接收到一个ChangeEvent
时,将调用此方法方法。
public Object getPreviousValue()
getValue()
返回的对象之前的序列中的对象。
如果序列的结尾已经到达,则返回null
。
调用此方法不影响value
。
这个方法只是委托给model
。 相当于:
getModel().getPreviousValue()
null
如果不存在
getValue()
,
getNextValue()
,
SpinnerModel.getPreviousValue()
public void setEditor(JComponent editor)
JComponent
的当前值的SpinnerModel
。
这种方法有责任将旧的编辑器与模型断开连接,并连接新的编辑器。
这可能意味着从模型或微调器本身中删除旧编辑器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()
AccessibleContext
为
JSpinner
getAccessibleContext
在接口
Accessible
getAccessibleContext
在
Component
AccessibleContext
为
JSpinner