2008年11月26日水曜日

Swing BeanBinding DateをJTextFieldにBindするには

NetBeans6.5にてDBアプリの自動生成を使用して、テーブルデータを表示する画面を作成した。
ところが、リストを選択した時にすべての項目が「詳細部分」に表示されるテーブルと、されない
テーブルがある。ログをみると、表示されない場合は、以下のようなExceptionがあった。

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException
at java.lang.Class.cast(Class.java:2951)
at org.jdesktop.beansbinding.Binding.convertForward(Binding.java:1312)
at org.jdesktop.beansbinding.Binding.getSourceValueForTarget(Binding.java:844)
at org.jdesktop.beansbinding.Binding.refreshUnmanaged(Binding.java:1222)


いろいろ調査してみた結果、問題はDateオブジェクトをJTextFieldのtextプロパティにCast
して設定しようとしているところらしいと判明。
 こんな感じ: jTextField1.setText((String)dateObj);
JFormattedTextFieldで日付を扱うものを用意し、そのValueにBindさせてみると、
無事にExceptionなしに表示された。

 教訓:IDEは便利だが、すべてをやってくれるわけではない。

0 件のコメント: