From 76140ba8d7bfe1ac6ed4a14ab078191b090b9328 Mon Sep 17 00:00:00 2001 From: Jan Breuer Date: Thu, 29 Sep 2016 15:42:25 +0200 Subject: [PATCH] Add support for LLLL format in newer Java versions According to https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html LLLL format is prefered for standalone month names This feature is not documented in Java 7 and earlier --- .../microba/calendar/ui/basic/ClassicCalendarPanel.java | 4 +++- .../microba/calendar/ui/basic/MonthComboBoxRenderer.java | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/michaelbaranov/microba/calendar/ui/basic/ClassicCalendarPanel.java b/src/main/java/com/michaelbaranov/microba/calendar/ui/basic/ClassicCalendarPanel.java index 2a6dd22..f8cf29d 100644 --- a/src/main/java/com/michaelbaranov/microba/calendar/ui/basic/ClassicCalendarPanel.java +++ b/src/main/java/com/michaelbaranov/microba/calendar/ui/basic/ClassicCalendarPanel.java @@ -56,6 +56,8 @@ class ClassicCalendarPanel extends JPanel implements private JButton fastNextButton; + private static final int JAVA_MAJOR_VERSION = Integer.parseInt(System.getProperty("java.version").split("\\.|_|-b")[1]); + public ClassicCalendarPanel(Date aDate, Locale aLocale, TimeZone zone) { this.locale = aLocale; this.zone = zone; @@ -159,7 +161,7 @@ private void createLocaleAndZoneSensitive() { } else calendar = Calendar.getInstance(zone, locale); - format = new SimpleDateFormat("MMMMM yyyy", locale); + format = new SimpleDateFormat(JAVA_MAJOR_VERSION >= 8 ? "LLLL yyyy" : "MMMMM yyyy", locale); format.setTimeZone(zone); setPreferredLabelSize(); diff --git a/src/main/java/com/michaelbaranov/microba/calendar/ui/basic/MonthComboBoxRenderer.java b/src/main/java/com/michaelbaranov/microba/calendar/ui/basic/MonthComboBoxRenderer.java index 6a90cda..0503d02 100644 --- a/src/main/java/com/michaelbaranov/microba/calendar/ui/basic/MonthComboBoxRenderer.java +++ b/src/main/java/com/michaelbaranov/microba/calendar/ui/basic/MonthComboBoxRenderer.java @@ -17,10 +17,12 @@ class MonthComboBoxRenderer extends DefaultListCellRenderer { private SimpleDateFormat dateFormat; + private static final int JAVA_MAJOR_VERSION = Integer.parseInt(System.getProperty("java.version").split("\\.|_|-b")[1]); + public MonthComboBoxRenderer(Locale locale, TimeZone zone) { // this.locale = locale; this.zone = zone; - dateFormat = new SimpleDateFormat("MMMM", locale); + dateFormat = new SimpleDateFormat(JAVA_MAJOR_VERSION >= 8 ? "LLLL" : "MMMM", locale); dateFormat.setTimeZone(zone); } @@ -37,7 +39,7 @@ public Component getListCellRendererComponent(JList list, Object value, public void setLocale(Locale locale) { // this.locale = locale; - dateFormat = new SimpleDateFormat("MMMM", locale); + dateFormat = new SimpleDateFormat(JAVA_MAJOR_VERSION >= 8 ? "LLLL" : "MMMM", locale); dateFormat.setTimeZone(zone); }