|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.JSpinner
public class JSpinner
让用户从一个有序序列中选择一个数字或者一个对象值的单行输入字段。Spinner 通常提供一对带小箭头的按钮以便逐步遍历序列元素。键盘的向上/向下方向键也可循环遍历元素。也允许用户在 spinner 中直接输入合法值。尽管组合框提供了相似的功能,但因为 spinner 不要求可隐藏重要数据的下拉列表,所以有时它也成为首要选择。
JSpinner
序列的值由其 SpinnerModel
定义。此 model
可指定为构造方法的参数,并且可通过 model
属性进行更改。提供了针对某些常见类型的 SpinnerModel
类:SpinnerListModel
、SpinnerNumberModel
和 SpinnerDateModel
。
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();
警告:此类的序列化对象与以后的 Swing 版本不兼容。当前序列化支持适用于短期存储,或适用于在运行相同 Swing 版本的应用程序之间进行 RMI(Remote Method Invocation,远程方法调用)。从 1.4 版本开始,已在 java.beans
包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder
。
SpinnerModel
,
AbstractSpinnerModel
,
SpinnerListModel
,
SpinnerNumberModel
,
SpinnerDateModel
,
JFormattedTextField
嵌套类摘要 | |
---|---|
protected class |
JSpinner.AccessibleJSpinner
AccessibleJSpinner 实现 JSpinner 类的可访问性支持。 |
static class |
JSpinner.DateEditor
其模型为 SpinnerDateModel 的 JSpinner 编辑器。 |
static class |
JSpinner.DefaultEditor
一个针对非常特殊编辑器的简单基类,该类在 JFormattedTextField 中显示模型的当前值的只读视图。 |
static class |
JSpinner.ListEditor
其模型为 SpinnerListModel 的 JSpinner 编辑器。 |
static class |
JSpinner.NumberEditor
其模型为 SpinnerNumberModel 的 JSpinner 编辑器。 |
从类 javax.swing.JComponent 继承的嵌套类/接口 |
---|
JComponent.AccessibleJComponent |
从类 java.awt.Container 继承的嵌套类/接口 |
---|
Container.AccessibleAWTContainer |
从类 java.awt.Component 继承的嵌套类/接口 |
---|
Component.AccessibleAWTComponent, 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()
将一个其源为此 JSpinner 的 ChangeEvent 发送到每个 ChangeListener 。 |
AccessibleContext |
getAccessibleContext()
获得此 JSpinner 的 AccessibleContext |
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 属性。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
构造方法详细信息 |
---|
public JSpinner(SpinnerModel model)
SpinnerModel
编辑器的完整 spinner。
public JSpinner()
Integer SpinnerNumberModel
。
方法详细信息 |
---|
public SpinnerUI getUI()
SpinnerUI
对象public void setUI(SpinnerUI ui)
ui
- SpinnerUI
L&F 对象UIDefaults.getUI(javax.swing.JComponent)
public String getUIClassID()
JComponent
中的 getUIClassID
JComponent.getUIClassID()
,
UIDefaults.getUI(javax.swing.JComponent)
public void updateUI()
JComponent
中的 updateUI
UIManager.getUI(javax.swing.JComponent)
protected JComponent createEditor(SpinnerModel model)
JComponent
。编辑器也可能允许用户直接输入序列中的元素。编辑器必须侦听 model
上的 ChangeEvents
,并且让显示的值与模型的值保持同步。
子类可能重写此方法以便添加对新 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
- 如果 model 为 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()
setValue(java.lang.Object)
,
SpinnerModel.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)
ChangeListeners
的 ChangeEvents
源将是此 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()
JSpinner
的 ChangeEvent
发送到每个 ChangeListener
。当向此 spinner 添加一个 ChangeListener
时,则每一次从模型接收到 ChangeEvent
都会调用此方法。
addChangeListener(javax.swing.event.ChangeListener)
,
removeChangeListener(javax.swing.event.ChangeListener)
,
EventListenerList
public Object getPreviousValue()
getValue()
所返回对象之前的对象。如果已达到序列末尾,则返回 null
。调用此方法不影响 value
。
此方法只委托给 model
。它等效于:
getModel().getPreviousValue()
null
getValue()
,
getNextValue()
,
SpinnerModel.getPreviousValue()
public void setEditor(JComponent editor)
SpinnerModel
当前值的 JComponent
。此方法负责将原编辑器从模型断开 并连接新的编辑器。这可能意味着将从模型中或者 spinner 本身移除原编辑器的 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()
JSpinner
的 AccessibleContext
Accessible
中的 getAccessibleContext
JComponent
中的 getAccessibleContext
JSpinner
的 AccessibleContext
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。