Привет всем, есть код | Код | public class MainClass { static JSpinner.DateEditor de1; static JSpinner s1; static JSpinner.DateEditor de2; static JSpinner s2; static JSpinner.DateEditor de3; static JSpinner s3; static Object value1; static Object value2; static Object value3; public static void main(final String args[]) { Calendar aGMTCalendar = Calendar.getInstance(TimeZone.getTimeZone("Moscow")); Date today = aGMTCalendar.getTime(); JFrame frame = new JFrame("JSpinner Dates"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true);
s1 = new JSpinner(new SpinnerDateModel(today, null, null, Calendar.MONTH)); de1 = new JSpinner.DateEditor(s1, "MMMM"); s1.setEditor(de1); s2 = new JSpinner(new SpinnerDateModel(today, null, null, Calendar.YEAR)); de2 = new JSpinner.DateEditor(s2, "yyyy"); s2.setEditor(de2); s3 = new JSpinner(new SpinnerDateModel(today, null, null, Calendar.DATE)); de3 = new JSpinner.DateEditor(s3, "dd"); s3.setEditor(de3);
ChangeListener listener1 = new ChangeListener() { public void stateChanged(ChangeEvent e) { Calendar cal = de1.getFormat().getCalendar(); value1 = cal.get(Calendar.MONTH)+1; System.out.println(" Month " + value1 ); } }; ChangeListener listener2 = new ChangeListener() { public void stateChanged(ChangeEvent e) { Calendar cal = de2.getFormat().getCalendar(); value2 = cal.get(Calendar.YEAR)+1; System.out.println(" Year " + value2 ); } }; ChangeListener listener3 = new ChangeListener() { public void stateChanged(ChangeEvent e) { Calendar cal = de3.getFormat().getCalendar(); value3 = cal.get(Calendar.DATE)+1; System.out.println(" Day " + value3 ); } };
s1.addChangeListener(listener1); s2.addChangeListener(listener2); s3.addChangeListener(listener3); //spinner3.addChangeListener(listener); frame.add(s1, BorderLayout.SOUTH); frame.add(s2, BorderLayout.CENTER); frame.add(s3, BorderLayout.NORTH); frame.setSize(200, 90); frame.setVisible(true);
}
}
|
Я не понимаю почему - при первом клике спиннера (месяца либо даты либо года ) - он принтует сразу 2 строки , а потом уже по одной. Я хотел бы чтобы он принтовал по одной. И вы не могли бы подсказать как внедрить логику для времени (Час - Минута - Сикунда) на фрейме - чтобы при клике спиннера (Часов - Минуты - Сикунды) передавало значение в int переменную. С уважением!
|