Ручной ввод в JDatePicker

122
27 февраля 2022, 06:20

При ручном вводе даты возникает ошибка

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.util.Date cannot be cast to java.util.Calendar

Каким образом можно доработать код, что бы была возможность и ручного ввода и с использованием выпадающего календаря?

public class WordWorker {
    public static void main(String[] args) {
        Locale locale=new Locale("ru","RU");
        JFrame frame=new JFrame();
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setSize(300,300);
        UtilDateModel model=new UtilDateModel();
        Properties p=new Properties();
        p.put("text.today","Today");
        p.put("text.month","Month");
        p.put("text.year","Year");
        JDatePanelImpl datePanel=new JDatePanelImpl(model,p);
        JDatePickerImpl datePicker=new JDatePickerImpl(datePanel,new DateLabelFormatter());
        datePicker.setTextEditable(true);
        frame.add(datePicker,"Center");
        JButton jButton=new JButton("Кнопка");
        jButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println(datePicker.getModel().getDay());
                System.out.println(datePicker.getModel().getMonth()+1);
                System.out.println(datePicker.getModel().getYear());
                System.out.println(datePicker.getModel().getValue());
            }
        });
        frame.add(jButton,"South");
        frame.setVisible(true);

    }
    private static class DateLabelFormatter extends JFormattedTextField.AbstractFormatter
    {
        private String datePattern="dd.MM.yyyy";
        private SimpleDateFormat dateFormatter=new SimpleDateFormat(datePattern);
        @Override
        public Object stringToValue(String text) throws ParseException {
            return dateFormatter.parseObject(text);
        }
        @Override
        public String valueToString(Object value) throws ParseException {
            if (value!=null)
            {
                Calendar cal= (Calendar) value;
                return dateFormatter.format(cal.getTime());
            }
            return "";
        }
    }
}
Answer 1

Решение в этом методе:

@Override
        public Object stringToValue(String text) throws ParseException {
            System.out.printf("1");
            Calendar cal = Calendar.getInstance();
            cal.setTime(dateFormatter.parse(text));// all done
            return cal;
        }
READ ALSO
PublishSubject в Presenter

PublishSubject в Presenter

PublishSubject получаю посредством метода в DbRepositoryСам DbRepository Singleton

101
Метод, принимающий значения типа List<>

Метод, принимающий значения типа List<>

Есть класс Book, который содержит поля типа String такие как Название книги, автор, издательство, тип переплета, год издательства, кол-во страниц...

82
Как читать wss:// поток в php без библиотек (streaming api vk)

Как читать wss:// поток в php без библиотек (streaming api vk)

Streaming api vk позволяет получать события со всего вк, и реализовано это через wss:// протоколНасколько я нагуглил, wss:// не поддерживается PHP по умолчанию

92
switch &lt; или &gt; в (int)

switch < или > в (int)

Возможно ли в switch сделать проверку на < ( больше ) или > ( меньше )

171