Нежелательные данные с использованием JDateChooser в JCalendar

#java #swing #jcalendar #jdatechooser

#java #swing #jcalendar #jdatechooser

Вопрос:

Я использую JDateChooser в JCalendar (с Swing). Я пытаюсь получить формат «гггг-ММ-дд», но по какой-то причине я также получаю время, и оно всегда одно и то же (00:00:00 MDT). У кого-нибудь есть идея, как избавиться от времени? Заранее спасибо.

 try {
    calendarDate = new JDateChooser();
} catch (Exception e) {
    e.printStackTrace();
}
calendarDate.setDateFormatString("yyyy-MM-dd");

dateLabel = new JLabel("Date");
parent.frame2.getContentPane().add(dateLabel);//1
parent.frame2.getContentPane().add(calendarDate);   
  

Комментарии:

1. Примечание. последняя версия 1.4, датированная 09.07.2011.

2. Что вы подразумеваете под «я также получаю время»? Где вы видите это отображаемое время?

Ответ №1:

JDateChooser Чтобы отобразить определенный формат даты, вам необходимо установить этот конкретный формат с помощью его setDateFormatString API

Пример :

 JDateChooser myDateChooser = new JDateChooser();
myDateChooser.setDateFormatString("yyyy-MM-dd");
  

Вы уже делаете это? Затем вы должны опубликовать место, где вы получаете значение от компонента.

И в том месте, где вы обрабатываете изменение свойств JDateChooser, вы можете сделать что-то вроде следующего, чтобы получить дату в том же формате :

Пример: (предполагая, что строка dateString — это то место, где вам нужна строка даты)

 myDateChooser.addPropertyChangeListener(new PropertyChangeListener() {

            @Override
            public void propertyChange(PropertyChangeEvent evt) {
                if (evt.getPropertyName().equals("date")) {
                    dateString = new SimpleDateFormat("yyyy-MM-dd").format(myDateChooser.getDate());
                }
            }
        });
  

Комментарии:

1. @PaulKar. Отредактированный ответ после вашего комментария

2. Спасибо за этот «новый SimpleDateFormat(«гггг-ММ-дд»).format(myDateChooser.getDate()

Ответ №2:

Я использую исходный код, а не скомпилированный файл в * .jar, затем

 calNewDate.setDateFormat(new SimpleDateFormat("dd.MM.yyyy"));
calNewDate.setSpiningCalendarField(Calendar.DAY_OF_MONTH);
calNewDate.setFont(new Font("SansSerif", Font.BOLD, 12));
calNewDate.setBackground(someColor);
calNewDate.addChangeListener(new ChangeListener() {

    @Override
    public void stateChanged(ChangeEvent e) {
       //some stuff
    }
});
calNewDate.setToolTipText("Whatever");
  

Комментарии:

1. @Paul: Я получаю ожидаемый результат в PropertyChangeListener используемом вами формате «гггг-ММ-дд»; возможно, вам потребуется применить тот же формат при установке метки.

Ответ №3:

Пожалуйста, обратите внимание на форматирование отметки даты в текстовом поле JDateChososer. Распространенная лексическая ошибка, которую вы можете сделать, заключается в следующем: я предположил addPropertyChangeListener , что за JDateChooser для отслеживания даты, которую пользователь устанавливает во входных данных:

 dateInserted.getDateEditor().addPropertyChangeListener(new PropertyChangeListener() {
            @Override
            public void propertyChange(PropertyChangeEvent evt) {
                // TODO Auto-generated method stub
                if ("date".equals(evt.getPropertyName())) {
                    Date date = dateInserted.getDateEditor().getDate();
                    ordine.setOrderDate(date);
                    dateInserted.setDateFormatString("dd/MM/YYYY");
                    dateInserted.setDate(date);
                    System.out.println(date.toString());
                    dateInserted.setBorder(BorderFactory.createLineBorder(Color.GREEN));
if (canIenableCalcolaEAggiungi(2) == true)
                        calculatingAndAdding.setEnabled(true);
                    else {
                        calculatingAndAdding.setEnabled(false);
                    }
                }
            }
        });
  

В скрипте это было написано неправильно:

  dateInserted.setDateFormatString("dd/MM/YYYY");
  

Когда вы выбираете шаблон формата года «ГГГГ» (вместо «гггг» или «гг» cfr API), он не распознается и выдает сбой следующим образом: при попытке редактирования текстового поля JDateChooser и при нажатии мыши дата автоматически изменяется на случайное значение. Это больше не может быть изменено. Это также может привести к появлению нежелательной даты.