The following code would help you for creating the spinner :
Code:
import javax.swing.*;
import java.awt.Color;
import java.awt.Container;
import java.util.Calendar;
import java.util.Date;
public class SpinnerDemo extends JPanel {
public SpinnerDemo(boolean cycleMonths) {
super(new SpringLayout());
String[] labels = {"Month: ", "Year: ", "Another Date: "};
int numPairs = labels.length;
Calendar calendar = Calendar.getInstance();
JFormattedTextField ftf = null;
String[] monthStrings = getMonthStrings(); //get month names
SpinnerListModel monthModel = null;
if (cycleMonths) { //use custom model
monthModel = new CyclingSpinnerListModel(monthStrings);
} else { //use standard model
monthModel = new SpinnerListModel(monthStrings);
}
JSpinner spinner = addLabeledSpinner(this,
labels[0],
monthModel);
ftf = getTextField(spinner);
if (ftf != null ) {
ftf.setColumns(8); //specify more width than we need
ftf.setHorizontalAlignment(JTextField.RIGHT);
}
int currentYear = calendar.get(Calendar.YEAR);
SpinnerModel yearModel = new SpinnerNumberModel(currentYear,
currentYear - 100,
currentYear + 100,
1);
if (monthModel instanceof CyclingSpinnerListModel) {
((CyclingSpinnerListModel)monthModel).setLinkedModel(yearModel);
}
spinner = addLabeledSpinner(this, labels[1], yearModel);
spinner.setEditor(new JSpinner.NumberEditor(spinner, "#"));
Date initDate = calendar.getTime();
calendar.add(Calendar.YEAR, -100);
Date earliestDate = calendar.getTime();
calendar.add(Calendar.YEAR, 200);
Date latestDate = calendar.getTime();
SpinnerModel dateModel = new SpinnerDateModel(initDate,
earliestDate,
latestDate,
Calendar.YEAR);//ignored for user input
spinner = addLabeledSpinner(this, labels[2], dateModel);
spinner.setEditor(new JSpinner.DateEditor(spinner, "MM/yyyy"));
SpringUtilities.makeCompactGrid(this,
numPairs, 2,
10, 10,
6, 10);
}
Bookmarks