微调控制器模型

    使用微调控制器和微调控制器的标准数据模型,3种模型的功能和方法如下:

   SpinnerDateModel模型是JSpinner选择日期的情况下使用的。使用该模型可以为其提供最大日期,最小日期,当前日期以及布进值,此类的两个构造方法如下:

   SpinnerDateModel():创键一个没有起点和终点的日期模型,使用当前日期作为初始当前值

   SpinnerDateModel(Date value,Comparable start ,Comparable end,int calendarFiled):创建一个具有当前值,起点,终点和步进值的日期模型

   步进量的单位一般使用Calendar类的静态常量表示,如下表所示

                                                                           Calendar 类的静态常量

常量常量意义
Calendar.YEAR步进单位为年
Calendar.MONTH步进单位为月
Calendar.DAY_OF_MONTH  Calendar.DATE 步进单位为天
HOUR_OF_DAY(24小时制) Calendar.HOUR(12小时制)步进单位为小时
Calendar.MINUTE步进单位为分钟
Calendar.SECOND步进单位为秒
Calendar.DAY_OF_WEEK用数字(1~7)表示(星期日~星期六)星期几
Calendar.AM_PM (0-上午;1-下午)   上/下午
Calendar.WEEK_OF_YEAR步进单位为周
Calendar.WEEK_OF_MONTH当前月的星期数
Calendar.DAY_OF_WEEK_IN_MONTH当前月中的第几个星期
Calendar.DAY_OF_YEAR当前年的第几天 












SpinnerDateModel类中常用的方法:

 public Date getDate():获取此序列中的当前元素

 public Comparable getEnd() :获取序列中的最后一个日期

public Comparable getStart() :获取序列中的第一个日期

 public void setEnd(Comparable end):更改此序列中的最后一个日期

 public void setStart(Comparable Start):更改此序列中的第一个日期

 public Object getValue():获取此日期序列中的当前元素

 public Object setValue(Object value):设置此序列中的当前日期

SpinnerListModel模型使用数组或List列表的元素作为带选择的选项,该模型允许用户对数值进行微调,可以支持整数,浮点数或数字表示的特定数字序列,同样可以指定最大值,最小值,步长等

SpinnerNumberModel模型允许用户对数值进行微调,可以支持整数,浮点数或数字表示的特定数字序列,同样可以指定最大值,最小值,步长等

代码实例:

package ch10;

import java.awt.BorderLayout;
import java.util.*;

import javax.swing.*;
import javax.swing.event.*;

public class SpinnerTest extends JFrame implements ChangeListener  
{
	JPanel jp = new JPanel();
	SpinnerNumberModel snm1 = new SpinnerNumberModel(2008,2008,2020,1);//允许用户对数值进行微调,起始值,最小值,最大值,增值
	SpinnerNumberModel snm2 = new SpinnerNumberModel(9,1,31,1);
	SpinnerListModel slm = new SpinnerListModel();
	ArrayList list = new ArrayList();
	JSpinner [] spinnerArray = {new JSpinner(snm1),new JSpinner(slm),new JSpinner(snm2)};//创建微调数组
	JLabel jl = new JLabel("您预定的机票的日期为:");
	JLabel[] labelArray = {new JLabel("选择年:"),new JLabel("选择月:"),new JLabel("选择日:")};
	public SpinnerTest()
	{
		this.add(jl,BorderLayout.SOUTH);
		this.add(jp);
		for(int i=1;i<=12;i++)
		{
			list.add(i+"月");
		}
		slm.setList(list);
		slm.setValue("9月");
		for(int i=0;i<spinnerArray.length;i++)
		{
			labelArray[i].setBounds(30+120*i,60,50,40);
			jp.add(labelArray[i]);
			spinnerArray[i].setBounds(90+130*i,60,70,40);
			spinnerArray[i].addChangeListener(this);
			jp.add(spinnerArray[i]);
		}
		this.setTitle("选择机票日期实例");
		this.setBounds(200,200,450,150);
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	public void stateChanged(ChangeEvent a)
	{
		int year = ((Integer)(spinnerArray[0].getValue())).intValue();
		String month = (String)(spinnerArray[1].getValue());
		int day = ((Integer)(spinnerArray[2].getValue())).intValue();
		jl.setText("您预订机票的日期是:"+year+"月"+month+day+"日");
	}
	public static void main(String args[])
	{
		new SpinnerTest();
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值