Нежелательные данные с использованием JDateChooser в JCalendar - PullRequest
4 голосов
/ 03 октября 2011

Я использую 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);   

Ответы [ 3 ]

6 голосов
/ 03 октября 2011

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

Пример:

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

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

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

Пример: (при условии, что String 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 голос
/ 03 октября 2011

Я использую код источника, а не скомпилированный файл в * .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");
0 голосов
/ 07 августа 2017

Обратите внимание на форматирование отметки даты в текстовом поле 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");

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

...