JXDatePickerで選択可能な日付範囲を制限する

Date
November 27, 2013
Tags
Java Swing

JXDatePickerにっぃて

JXDatePickerゎSwingのコンポーネントで、
カレンダーから日付を選ぶUIをかんたんに追加できます
同様のものゎ名前まで似てるJDatePickerとかぁるんですけど、
派生とかじゃなくてぜん②ちがぅものみたぃです

ただ選択させて、日付を取得するだけの
ぃちばんシンプルな使ぃ方だと、こんなかんじです

public class Calendar extends JPanel {
    private JXDatePicker datePicker;
    public Calendar(){
        datePicker = new JXDatePicker();
        add(datePicker);
    }
    public Date getDate(){
        return datePicker.getDate();
    }
}

選択可能な日付を制限する

日付の計算と指定

今回ゎ、明日以降の1週間だけを選択可能にしてみることにします

まず明日とか1週間後とかを計算しなきゃですが、
Apache Commons LangDateUtilsクラスをっかぅと、
日付の計算もとてもかんたんにできます

https://gist.github.com/ayapi/7592669 Line:2

DateUtilsクラスでの明日と1週間後の計算ゎこんなかんじでかんたんです

https://gist.github.com/ayapi/7592669 Line:15-16

もし昨日とかがほしければaddDaysで負の値を足せばできます

それでJXDatePickerのインスタンスに、
ぃっからぃっまで選択可能にするのかを指定します
https://gist.github.com/ayapi/7592669 Line:18-20

みためを整ぇる

以上のコードで動くにゎ動くんですけど、
デフォだと、バツ印が真っ赤で、ちょっと派手すぎって思ぅ時がぁります

バツ印の色を変ぇるにゎUIManagerのUIプロパティで色を指定します

https://gist.github.com/ayapi/7592669 Line:22

このょーにUIプロパティーを変ぇた時ゎ、
値を変ぇたことをUIに適用(更新)するのが必要で、
JComponentupdateUI()メソッドもしくゎ
SwingUtilities.updateComponentTreeUI()どちらかをっかぃます

それで適用してみると、バツの色がちゃんと変ぇれました!

JXDatePickerデフォルトカラー JXDatePickerカスタムカラー

Syntheticaをぁててる時の注意

ちょっと話ずれるんですけど、
Swingのみためを一気にかっこょくしてくれる
Syntheticaってゅーテーマ集がぁります
ぁゃぴもBlackEyeを入れてテンションをぁげてます

けどSyntheticaをふつーに入れてるだけだと、
JXDatePickerがそも②動きません!
まったくぉなじエラーで困ってる人がぃました
jxdatepicker with Synthetica Aluoxide look and feel not working - Stack Overflow

Syntheticaをっかってる状態でJXDatePickerを動かすにゎ
SyntheticaAddonsも入れれば動くょーになります

ちなむとSynthetica BlackEyeをぁてたらこんなかんじです
ゃっぱかっこぃぃ\(^o^)/

JXDatePickerとSynthetica BlackEye

完成ばん

てことで、できたコードがこれですー\(^o^)/

https://gist.github.com/ayapi/7592669