private void initComboBoxes() { Calendar calendar = new GregorianCalendar();
for (int i = 1900; i <= 2100; i++) { cbYear.addItem(i); } cbYear.setSelectedIndex(calendar.get(Calendar.YEAR) - 1900);
for (int i = 1; i <= 12; i++) { cbMonth.addItem(i); } cbMonth.setSelectedIndex(calendar.get(Calendar.MONTH));
int days = getDayInMonth((Integer) cbYear.getSelectedItem(), (Integer) cbMonth.getSelectedItem()); for (int i = 1; i <= days; i++) { cbDay.addItem(i); } cbDay.setSelectedIndex(calendar.get(Calendar.DATE) - 1); //关键是下面两个添加Listener的代码 cbYear.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent event) { if (event.getStateChange() == ItemEvent.SELECTED) { cbDay.removeAllItems(); int days = getDayInMonth((Integer) cbYear.getSelectedItem(), (Integer) cbMonth.getSelectedItem()); for (int i = 1; i <= days; i++) { cbDay.addItem(i); } cbDay.validate(); } } }); cbMonth.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent event) { if (event.getStateChange() == ItemEvent.SELECTED) { cbDay.removeAllItems(); int days = getDayInMonth((Integer) cbYear.getSelectedItem(), (Integer) cbMonth.getSelectedItem()); for (int i = 1; i <= days; i++) { cbDay.addItem(i); } cbDay.validate(); } } }); }
private int getDayInMonth(int year, int month) { boolean yunnian = false;
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { yunnian = true; } switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; case 2: return yunnian ? 29 : 28; default: return 30; } }
public static void main(String[] args) { JFrame frame = new TestFrame(); frame.pack(); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
import java.awt.event.*;
import javax.swing.*;
import java.util.*;public class TestFrame extends JFrame
{
private JComboBox cbYear = new JComboBox();
private JComboBox cbMonth = new JComboBox();
private JComboBox cbDay = new JComboBox();
public TestFrame()
{
initComboBoxes();
this.setLayout(new FlowLayout());
add(cbYear);
add(cbMonth);
add(cbDay);
}
private void initComboBoxes()
{
Calendar calendar = new GregorianCalendar();
for (int i = 1900; i <= 2100; i++)
{
cbYear.addItem(i);
}
cbYear.setSelectedIndex(calendar.get(Calendar.YEAR) - 1900);
for (int i = 1; i <= 12; i++)
{
cbMonth.addItem(i);
}
cbMonth.setSelectedIndex(calendar.get(Calendar.MONTH));
int days = getDayInMonth((Integer) cbYear.getSelectedItem(), (Integer) cbMonth.getSelectedItem());
for (int i = 1; i <= days; i++)
{
cbDay.addItem(i);
}
cbDay.setSelectedIndex(calendar.get(Calendar.DATE) - 1); //关键是下面两个添加Listener的代码
cbYear.addItemListener(new ItemListener()
{
public void itemStateChanged(ItemEvent event)
{
if (event.getStateChange() == ItemEvent.SELECTED)
{
cbDay.removeAllItems();
int days = getDayInMonth((Integer) cbYear.getSelectedItem(), (Integer) cbMonth.getSelectedItem());
for (int i = 1; i <= days; i++)
{
cbDay.addItem(i);
}
cbDay.validate();
}
}
});
cbMonth.addItemListener(new ItemListener()
{
public void itemStateChanged(ItemEvent event)
{
if (event.getStateChange() == ItemEvent.SELECTED)
{
cbDay.removeAllItems();
int days = getDayInMonth((Integer) cbYear.getSelectedItem(), (Integer) cbMonth.getSelectedItem());
for (int i = 1; i <= days; i++)
{
cbDay.addItem(i);
}
cbDay.validate();
}
}
});
}
private int getDayInMonth(int year, int month)
{
boolean yunnian = false;
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
yunnian = true;
}
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 2:
return yunnian ? 29 : 28;
default:
return 30;
}
}
public static void main(String[] args)
{
JFrame frame = new TestFrame();
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}