分享
 
 
 

今天用了一下JSpinner

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

今天用了一下JDK1.4 中新增的JSpinner,它能够方便地选择日期、数字或列表中的选项。

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();

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有