在java的注册页面中,如果要有日期项,则可以用Calendar这个类来根据所选年月来生成天数:
package view;
import java.awt.BorderLayout;
public class Register extends JFrame {
private int STARYEAR = 1896;//初始年份
private JPanel contentPane;
private JComboBox comboBox_year,comboBox_month,comboBox_day;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Register frame = new Register();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Register() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 400, 100);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
comboBox_year = new JComboBox();
comboBox_year.setBounds(21, 20, 65, 25);
contentPane.add(comboBox_year);
comboBox_month = new JComboBox();
comboBox_month.setBounds(106, 20, 65, 25);
contentPane.add(comboBox_month);
comboBox_day = new JComboBox();
comboBox_day.setBounds(187, 20, 65, 25);
contentPane.add(comboBox_day);
JLabel label_year = new JLabel("年");
label_year.setFont(new Font("宋体", Font.PLAIN, 15));
label_year.setBounds(90, 20, 17, 25);
contentPane.add(label_year);
JLabel label_month = new JLabel("月");
label_month.setFont(new Font("宋体", Font.PLAIN, 15));
label_month.setBounds(170, 20, 17, 25);
contentPane.add(label_month);
JLabel label_day = new JLabel("日");
label_day.setFont(new Font("宋体", Font.PLAIN, 15));
label_day.setBounds(254, 20, 17, 25);
contentPane.add(label_day);
//初始化数据
initYear();
initMonth();
initDay();
//增加监听
addListener(comboBox_year,comboBox_month);
}
//设置监听年份和月份的下拉列表框
public void addListener(JComboBox...jComboBox){
for(JComboBox boBox:jComboBox){
boBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//改变天数
ChangeDay();
}
});
}
}
//初始化年份
public void initYear(){
//创建当前日期的日历类
Calendar calendar = Calendar.getInstance();
//注册时间是从1896到当前年份,STARYEAR数值为1896
int yearnum = calendar.get(Calendar.YEAR) - STARYEAR+1;
int yeartmp = calendar.get(Calendar.YEAR);//从今年开始赋值,
for (int i = 0; i < yearnum; i++) {
comboBox_year.addItem(""+yeartmp--);
}
}
//初始化月份
public void initMonth() {
//创建当前日期的日历类,日历类中的月份是从0-11的,getMaximum(Calendar.MONTH)月份数得到的是11
Calendar calendar = Calendar.getInstance();
// 得到当前年份的月份数
int monthnum = calendar.getMaximum(Calendar.MONTH);
// 创建月份数组并初始化下拉列表,月份要+1,因为月份数为11
int monthtmp = 1;// 从1月开始显示;
for (int i = 0; i < monthnum; i++) {
comboBox_month.addItem("" + monthtmp++);
}
}
// 初始化天数
public void initDay() {
// 创建当前日期的日历类
Calendar calendar = Calendar.getInstance();
// 得到当前年月的天数
int daynum = calendar.getActualMaximum(Calendar.DATE);
int daytmp = 1;// 从1号开始显示;
for (int i = 0; i < daynum; i++) {
comboBox_day.addItem("" + daytmp++);
}
}
//设置根据选择的年月设置显示天数
public void ChangeDay() {
//删除所有天数下接列表框项
comboBox_day.removeAllItems();
//创建日历类,并设置年和月为选择中的数
Calendar calendar = Calendar.getInstance();
//设置年和月
calendar.set(Calendar.YEAR, Integer.parseInt(comboBox_year.getSelectedItem().toString()));
//设置月份,要-1
calendar.set(Calendar.MONTH, Integer.parseInt(comboBox_month.getSelectedItem().toString()) - 1);
// 得到当前选中年月的天数
int daynum = calendar.getActualMaximum(Calendar.DATE);
int daytmp = 1;// 从1号开始显示;
for (int i = 0; i < daynum; i++) {
comboBox_day.addItem("" + daytmp++);
}
}
}