#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 и при нажатии мыши дата автоматически изменяется на случайное значение. Это больше не может быть изменено. Это также может привести к появлению нежелательной даты.