<%@ page contentType="text/html; charset=gb2312"%> 今天用了一下JSpinner
网站公告:   ◆北天JAVA技术网热情为java爱好者服务,本网内容包括JAVA(JSP、servlet、EJB、webservice、j2ee、javabean、应用服务器、JavaScript),数据库(MYSQL、SQL Server、Sybase、Oracle、DB2、数据库综合知识),设计研究(设计模式、Struts、Spring、Hibernate、设计框架、设计综合知识),WEB2.0新技术(主要介绍AJAX),以及各种技术的入门、实例、例子等等,欢迎各位多来坐坐!◆  诚邀各位JAVA爱好者加盟!◆  本网站内容丰富,更新快,保证每周20篇以上!  
加入收藏
设为首页
联系站长
承接项目
  相关资源:网站首页 | 免费培训学院 | 技术论坛 | JAVA聊天室 | 作家专栏 | 开发工具 | 认证考试 | 会员俱乐部
  JAVA技术初学者园地 | jsp与servlet | javascript | Java源代码 | EJB | web service | 应用服务器 | JAVA综合知识
  设计研究设计模式 | 设计框架 | Struts | Spring | Hibernate | 开源项目 | 面向对象设计 | 设计综合知识
  数 据 库MYSQL | SQL Server | Sybase | Oracle | DB2 | Informix | Access | 数据库综合知识
  其他资源:AJAX新技术 | 网站开发 | ERP软件 | OA办公软件 | 商业智能BI | 开发综合知识 | 承接项目 | 项目试用

 
 
今天用了一下JSpinner
     发布者: 发布时间:2006-05-07


JSpinner 示例


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

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

清单 1. 简单的 JSpinner 用法

String[] months = new DateFormatSymbols().getMonths();
SpinnerModel model = new SpinnerListModel(months);
JSpinner spinner = new JSpinner(model);






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

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


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


SpinnerNumberModel:用于接受已设定好步长的一定范围内的数字( int 或 double)的输入。
每个 SpinnerModel 执行取决于用于输入值的编辑器。此编辑器必须是一个 JComponent;系统定义的编辑器子类 JSpinner.DefaultEditor。其中一个可用于每个模型:

JSpinner.DateEditor:用于 SpinnerDateModel。允许您定制输入日期格式。

JSpinner.ListEditor:用于 SpinnerListModel。支持 type-ahead 来对值进行定位。

JSpinner.NumberEditor:用于 SpinnerNumberModel。允许您定制十进制格式的模式。


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

清单 2. JSpinner 事件侦听

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






一个完整的示例
让我们来看一下使用全部三种不同的 spinner 模型的示例(清单 3)。列表模型使用从 DateFormatSymbols 类取出的月份名称集。日期模型示例更改编辑器的输入格式。当使用该字段旁边的箭头时,每次也可将日期移动一周。数字模型示例让用户选取从 0 到 100 之间的一个数字,当使用箭头时每次跳 5 个数。请注意:用户可输入任意数字,而并不仅限于 5 的倍数。

对于所有组件来说,当每个 spinner 值确实发生更改时,所连的侦听器将显示同一改变。如果使用光标键更改月、日或年,您会注意到直到按下回车键这些值才发生更改。

清单 3. JSpinner 完整示例

import javax.swing.*;
import javax.swing.event.*;
import java.text.*;
import java.awt.*;
import java.util.*;

public class Spinner {
public static void main (String args[]) throws Exception {
JFrame frame = new JFrame("Spinner");
frame.setDefaultCloseOperation(3);
String[] months = new DateFormatSymbols().getMonths();
SpinnerModel model = new SpinnerListModel(months);
JSpinner spinner = new JSpinner(model);
frame.getContentPane().add(spinner, BorderLayout.NORTH);

SpinnerDateModel model2 = new SpinnerDateModel();
model2.setCalendarField(Calendar.WEEK_OF_MONTH);
JSpinner spinner2 = new JSpinner(model2);
JSpinner.DateEditor editor2 = new JSpinner.DateEditor(
spinner2, "MMMMM dd, yyyy");
spinner2.setEditor(editor2);
frame.getContentPane().add(spinner2, BorderLayout.SOUTH);

SpinnerNumberModel model3 = new SpinnerNumberModel(50, 0, 100, 5);
JSpinner spinner3 = new JSpinner(model3);
frame.getContentPane().add(spinner3, BorderLayout.CENTER);

ChangeListener listener = new ChangeListener() {
public void stateChanged(ChangeEvent e) {
SpinnerModel source = (SpinnerModel)e.getSource();
System.out.println("The value is: " + source.getValue());
}
};
model.addChangeListener(listener);
model2.addChangeListener(listener);
model3.addChangeListener(listener);

frame.pack();
frame.show();
}
}



(转载文章请保留出处:北天JAVA技术网(www.java114.com))
 
更多精彩文章:
JSP 2.0 + ORACLE 9i 下高效率分页的一个例子
JSP与Servlet
Jsp 服务器resin的url重定向的摸索
JSP环境准备
Servlet中如何捕获Session事件?
JSP利用组件实现文件上传的全攻略
 
最近评论:
        
冰封的往事!
wow power leveling,wow gold,wow power leveling,wow gold max(3250)
        
冰封的往事!
wow power leveling,wow gold,WoW Gold,wow gold max(7728)
        
标 题:   
内 容:   
 
                                  
 
免责声明:该文章由网友发表,如果对您造成侵权,请联系站长

首页 - 承接项目 - 网站地图 - 联系我们 -
版权所有北天JAVA技术工作室 ICP证号:粤ICP备06079815号