Swing组件的新元素Spinner Model

开发 后端
本文介绍Swing组件的新元素Spinner Model,以及介绍根据您所用的输入类型,有以下几个可用于创建组件数据模型的帮助类。

Swing组件的新元素Spinner Model

Java 2 SDK,1.4 beta 的最新发行版向 JFC/Swing组件集添加了两个强大的新组件。其中一个是 JSpinner ,它使用户能够方便地选择日期、数字或拾取列表中的选项。(另一个是 JFormattedTextField ,用于支持格式化的输入。)

开始启动

JSpinner 使您可创建一个排序的值列表,该表在选择框中每次显示一个选项。用户通过点击上移和下移箭头进行选择。

用户使用组件或键盘上的上移和下移箭头进行选择。他们也可输入自己的选择。然而,与 JComboBox 不同, JSpinner 不提供下拉列表选择,所以各个选择以及它们的顺序应有一定的意义。

要使用类,可简单地创建一个供选择的元素集合(在 List 或数组中),从列表中创建一个 Spinner Model ,并为模型创建一个 JSpinner :

根据您所用的输入类型,有以下几个可用于创建Swing组件数据模型的帮助类:


◆SpinnerDateModel :用于接受日期输入。该类支持通过将 Calendar 类中的常数设置为不同的值来更改日期;例如, Calendar.WEEK_OF_MONTH 每次将日期更改一周。


◆SpinnerListModel :用于接受来自值列表的输入。


◆SpinnerNumberModel :用于接受已设定好步长的一定范围内的数字( int 或 double )的输入。

每个 Spinner Model 执行取决于用于输入值的编辑器。此编辑器必须是一个 JComponent ;系统定义的编辑器子类 JSpinner.DefaultEditor 。其中一个可用于每个模型:
◆JSpinner.DateEditor :用于 SpinnerDateModel 。允许您定制输入日期格式。
◆JSpinner.ListEditor :用于 SpinnerListModel 。支持 type-ahead 来对值进行定位。
◆JSpinner.NumberEditor :用于 SpinnerNumberModel 。允许您定制十进制格式的模式。

所有这些类(及更多类)之间的关系如图1所示。

JSpinner UML 关系示意图

JSpinner UML 关系示意图

JSpinner 组件象其它 Swing组件一样工作。如果您有兴趣查出用户更改选择的时间,请连一个侦听器。对于 JSpinner ,侦听器是一个 ChangeListener ,您可直接将其连到 JSpinner 或其 Spinner Model 上。虽然您可将侦听器连到两者中的任意一个,当值发生更改时, ChangeEvent 的源总是 Spinner Model :

清单1. JSpinner 事件侦听

  1. ChangeListener listener = new ChangeListener() {  
  2. public void stateChanged(ChangeEvent e) {  
  3. SpinnerModel source = (SpinnerModel)e.getSource();  
  4. System.out.println("The value is: " + source.getValue());  
  5. }  
  6. };  
  7. model.addChangeListener(listener);  

【编辑推荐】

  1. 动态语言是否将会挽救Swing
  2. 用TableModel框架简化Swing开发
  3. Swing模型过滤技术详解
  4. Java Swing开发的一些热点
  5. 使用Swing动态界面设计技术透析
责任编辑:佚名 来源: 新浪科技
相关推荐

2009-07-14 17:21:42

Swing组件

2009-07-15 11:02:32

Swing组件

2009-07-10 16:29:32

Swing组件

2010-01-22 10:53:04

C++堆栈

2009-07-15 13:06:38

Swing组件

2009-07-10 10:19:57

JFormattedTSwing

2009-07-10 18:06:59

JTree Swing

2009-07-17 12:54:13

2009-07-10 13:20:37

Swing容器组件

2012-03-01 10:50:11

Windows 8微软

2010-07-27 09:55:52

Flex4

2009-07-10 14:58:13

JLabel组件JFC和Swing

2009-07-15 10:52:13

JTree组件

2009-07-10 12:30:12

Swing组件

2009-07-17 11:13:46

AWT和SwingSwing组件

2009-07-17 14:38:51

轻量级Swing组件

2009-07-10 17:03:17

AWT组件Swing组件

2009-07-14 18:05:28

轻量级Swing组件

2009-07-17 10:31:18

paint方法Swing组件

2013-04-10 10:35:36

IDF2013施浩超极本
点赞
收藏

51CTO技术栈公众号