import java.awt.ComponentOrientation; import javax.swing.*; import java.awt.*; import java.util.*; public class Test { public static void main(String[] args) { JFrame frame = new JFrame(); JTextField field1 = new JTextField(); JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); panel.setSize(300, 300); JSpinner dateSp = new JSpinner(); JSpinner listSp = new JSpinner(); JSpinner numberSp = new JSpinner(); Calendar calendar = Calendar.getInstance(); Date initDate = calendar.getTime(); calendar.add(Calendar.YEAR, -1); Date earliestDate = calendar.getTime(); calendar.add(Calendar.YEAR, 1); Date latestDate = calendar.getTime(); SpinnerModel dateModel = new SpinnerDateModel(initDate, earliestDate, latestDate, Calendar.YEAR);//ignored for user input dateSp.setModel(dateModel); //dateSp.setEditor(new JSpinner.DateEditor(dateSp, "MM/yyyy")); int currentYear = calendar.get(Calendar.YEAR); SpinnerModel yearModel = new SpinnerNumberModel(currentYear, //initial value currentYear - 1, //min currentYear + 2, //max 1); //step numberSp.setModel(yearModel); dateSp.setModel(dateModel); String[] monthStrings = getMonthStrings(); //get month names SpinnerListModel monthModel = new SpinnerListModel(monthStrings); listSp.setModel(monthModel); dateSp.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT); listSp.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT); numberSp.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT); panel.add(dateSp, BorderLayout.NORTH); panel.add(listSp, BorderLayout.CENTER); panel.add(numberSp, BorderLayout.SOUTH); frame.add(panel); frame.setSize(300, 300); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } static protected String[] getMonthStrings() { String[] months = new java.text.DateFormatSymbols().getMonths(); int lastIndex = months.length - 1; if (months[lastIndex] == null || months[lastIndex].length() <= 0) { //last item empty String[] monthStrings = new String[lastIndex]; System.arraycopy(months, 0, monthStrings, 0, lastIndex); return monthStrings; } else { //last item not empty return months; } } }