Hello, I'd like to announce a good Java date picker swing component, in the hopes that other programmers here will find it useful.
It is called LGoodDatePicker. A list of features is below. There are screenshots and an executable demo jar at the GitHub site. The package is relatively new, so your comments and criticisms would be welcome.
Automatic internationalization. (Month names, weekday names, the default first day of the week, default date formats, and button text.)
Translations so far include 12 languages.
Fonts and colors can be changed. (For example the highlight color, or the invalid date font).
Uses the standard Java 8 time package. This package is also called "java.time" or "JSR-310"
Automatic validation of dates, whether entered with the mouse or keyboard.
Optional highlight policies and veto policies.
Relatively compact source code (3 main classes).
Simple usage. Creating a DatePicker requires only one line of code.
Working demo program. (The demo Jar can be downloaded from the Github page release files.)
Code and usage examples.
Complete Javadoc documentation.
Open source license.
I am much more familiar with the other modern date pickers competitors than the Tödter JCalendar, so I can only give "first impressions". I had previously heard of JCalendar. (And I have read its website.) I imagine that every programmer has different acceptance criteria, and this particular component never quite made my "radar" for the amount of interest required to try using it in a project. Someone who's used the JCalendar in their own software would be more versed on its particular advantages and disadvantages. (The date choosers which I have personally evaluated include JDatePicker, Microba DatePicker, and JXDatePicker.)
I'm looking it over right now, and I (think) I can see a few obvious differences. Please correct me if I'm wrong about any of them. In summary, I'd say that LGoodDatePicker takes advantage of many technologies that were not available when the Tödter product was created, but those same technologies are now considered "best practice" (and frankly hard to live without) by a significant subset of programmers who have to deal with date and time programming.
* Aesthetic appeal is subjective. However, I have an impression that both LGoodDatePicker, and the other commonly used date pickers, may have an aesthetic advantage. (Possibly a "sleeker" look.)
* Developer interest and popularity is also hard to measure, but my impression is that the competitors of the the Tödter product are more widely used. For example, the number of forks of a project can be seen as a measure of developer interest. As of this writing, Tödter JCalendar has been on Github from 2011 to 2016, but it currently has 1 fork. For comparison, JDatePicker has 27 forks. Microba DatePicker has 5 forks.
* Different navigation design: I personally prefer forward and back month/year buttons, to using spinner fields for the same purpose.
* Modern time library standards: Tödter uses java.util.Date, which was the standard at the time it was created. LGoodDatePicker uses Java.time.LocalDate, which is a class in the new standard time package which was released with Java 8 (also called JSR-310, and based on Joda Time). The new Java 8 packages are generally acknowledged as major improvements in date and time handling methodology. The time package differences are beyond the scope of my reply, but a quick internet search on the topic would give an idea of how big a deal this has been for developers.
* Modern project standards: LGoodDatePicker uses Maven to build its project. The Tödter download file is shipped as "bare" source code. Considering the number of classes that it has, this slows down any programmer who wants to build the project themselves, or to contribute to the project.
I have an appreciation for any developer who takes the time to create an open-source package! I'm glad that things like the Tödter JCalendar were created, because they have filled, and continue to fill, a large developer and software user need.
Interesting... I just updated my application to use Java 8 date and time classes, but then I have to interface with the legacy date format (java.util.Date) used by my calendar selector. Which I got from IBM about 10 years ago and don't have the source code for. In fact when I googled it just now, all of the posts are more like 15 years old. It still works (that's Java for you) but I should look into something new anyway so I'm going to have a look at your component.
posted 4 years ago
I hope you enjoy it. I would appreciate any feedback, suggestions, or bug reports you may have.
I can be reached using this email form. (You could also use a CodeRanch.com PM, or create a new new issue at LGoodDatePicker Github.)