netbeans6.5で、ディスクトップアプリを作った時の困りごと

View: New views
4 Messages — Rating Filter:   Alert me  

netbeans6.5で、ディスクトップアプリを作った時の困りごと

by tomtomf :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

こんにちは、

ディスクトップアプリケーションに関する質問です。

環境 WIN XP SP3
netbeans 6.5
MySQL 5.0
JDK 6.0


netbeans 6.5で、簡単なデーベースのテーブルを
利用して、ディスクトップアプリケーションのウィザードを
利用して、基本的なアプリを作りました。

MySQLのテーブルは、

id     int型 プライマリキー
date1   date型

に適当な、データを入れて、

データの表示は、問題ないのですが。
この基本アプリの日付のカラム
表示には、2009/05/05のように、表示されるのですが。
ここで、データの追加ボタンを押して、
JTableの、id のカラムには、数字は入るのですが。
date1 のカラムには、データが受け付けません。

いろいろやってみると、日付は、データの追加を
しようとすると、上手い行かないみたいです。

これって、デスクトップアプリでは、
日付型を利用しては、駄目なのでしょうか。
それとも、バグ(解らないとすぐバグにしてしまいますが。)
何か良い方法が、ないでしょうか。

いろいろ調べると、キャスティングの問題らしいですが、
自力では、解決できそうもないので、
質問しました。
お願いいたします。

エラーの最初の数行を載せます。

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException
        at java.lang.Class.cast(Class.java:2990)
        at org.jdesktop.beansbinding.Binding.convertReverse(Binding.java:1321)
        at org.jdesktop.beansbinding.Binding.getTargetValueForSource(Binding.java:909)
        at org.jdesktop.beansbinding.Binding.saveUnmanaged(Binding.java:1268)
        at org.jdesktop.beansbinding.Binding.save(Binding.java:1254)
        at org.jdesktop.beansbinding.AutoBinding.trySaveThenRefresh(AutoBind

最後に実行画面も添付しました。


******************************
TOMTOM

--------------------------------------
Power up the Internet with Yahoo! Toolbar.
http://pr.mail.yahoo.co.jp/toolbar/

---------------------------------------------------------------------
To unsubscribe, e-mail: nbdiscuss_ja-unsubscribe@...
For additional commands, e-mail: nbdiscuss_ja-help@...

=?utf-8?q?databaseappli.jpg?= (96K) Download Attachment

Re: netbeans6.5で、ディスクトップアプリを作った時の困りごと

by TAKAHASHI,Toru :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

tomtomf@... wrote:

> これって、デスクトップアプリでは、
> 日付型を利用しては、駄目なのでしょうか。
> それとも、バグ(解らないとすぐバグにしてしまいますが。)
> 何か良い方法が、ないでしょうか。

データベースと接続するデスクトップアプリケーションは
書いたことがないですが、通常のデスクトップアプリケーションを
使ってjava.util.DateをJTableに表示するだけなら、toString()で
文字列化されるので、追加コードを書かなくてバインディングを
指定するだけで動作します。

一方、画面上から文字列を入力してjava.util.Dateクラスとして
値をどこかに格納するときは、文字列はそのままではDateにならなかった
ので、細工が必要と思います。

以下は、過去Swing Application Frameworkの実験をしていたときに
作っていたプロジェクトの残骸から抜いてきたもので、動作するか
分かりませんが、参考になればと思い載せます。
#日付入力部分が消えてしまっているので、動作確認できていません

ーーー サンプル未満 −−−
JTextFieldのバインド設定で、バインドダイアログの[詳細]タブ、
型変換のコンバータにカスタムコードを選択して、ダイアログ上に
直接コードを書いていました

      new Converter<Date, String>() {
            public String convertForward(Date d) {
                if (d==null) return "NULL";
                return fmt.format(d);
            }
            public Date convertReverse(String s) {
                try {
                    return fmt.parse(s);
                } catch (ParseException e) {
                    return null;
                }
            }
            private SimpleDateFormat fmt = new SimpleDateFormat("yyyy/MM/dd");
        }


---------------------------------------------------------------------
To unsubscribe, e-mail: nbdiscuss_ja-unsubscribe@...
For additional commands, e-mail: nbdiscuss_ja-help@...


Re: netbeans6.5で、ディスクトップアプリを作った時の困りごと

by tomtomf :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

こんにちは、takahasiさん

おかげさまで、上手く行きました。

昨日から、いろいろ検討したのですが。
もう一つ、逃げ道を見つけました。

アプリが勝手に作る、テキストボックスを
削除して、書式付テキストボックスに変更してバインドしても
上手く行くようでした。

takahasiさんに教えてもらった方法と、
ボックスの変更と、
逃げ道が、二つできました。

ありがとうございました。





--- "TAKAHASHI,Toru"  wrote:

> tomtomf@... wrote:
>
> > これって、デスクトップアプリでは、
> > 日付型を利用しては、駄目なのでしょうか。
> > それとも、バグ(解らないとすぐバグにしてしまいますが。)
> > 何か良い方法が、ないでしょうか。
>
> データベースと接続するデスクトップアプリケーションは
> 書いたことがないですが、通常のデスクトップアプリケーションを
> 使ってjava.util.DateをJTableに表示するだけなら、toString()で
> 文字列化されるので、追加コードを書かなくてバインディングを
> 指定するだけで動作します。
>
> 一方、画面上から文字列を入力してjava.util.Dateクラスとして
> 値をどこかに格納するときは、文字列はそのままではDateにならなかった
> ので、細工が必要と思います。
>
> 以下は、過去Swing Application Frameworkの実験をしていたときに
> 作っていたプロジェクトの残骸から抜いてきたもので、動作するか
> 分かりませんが、参考になればと思い載せます。
> #日付入力部分が消えてしまっているので、動作確認できていません
>
> ーーー サンプル未満 −−−
> JTextFieldのバインド設定で、バインドダイアログの[詳細]タブ、
> 型変換のコンバータにカスタムコードを選択して、ダイアログ上に
> 直接コードを書いていました
>
>       new Converter<Date, String>() {
>             public String convertForward(Date d) {
>                 if (d==null) return "NULL";
>                 return fmt.format(d);
>             }
>             public Date convertReverse(String s) {
>                 try {
>                     return fmt.parse(s);
>                 } catch (ParseException e) {
>                     return null;
>                 }
>             }
>             private SimpleDateFormat fmt = new SimpleDateFormat("yyyy/MM/dd");
>         }
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: nbdiscuss_ja-unsubscribe@...
> For additional commands, e-mail: nbdiscuss_ja-help@...
>
>

******************************
TOMTOM

--------------------------------------
Power up the Internet with Yahoo! Toolbar.
http://pr.mail.yahoo.co.jp/toolbar/

---------------------------------------------------------------------
To unsubscribe, e-mail: nbdiscuss_ja-unsubscribe@...
For additional commands, e-mail: nbdiscuss_ja-help@...


Re: netbeans6.5で、ディスクトップアプリを作った時の困りごと

by mlus-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

ちょっと乱暴ですが・・・・・

JTable は、おおざっぱに分けて以下の3つから構成されています。

1.データ保存機能  TableModel
2.データ表示機能  TableCellRenderer
3.データ編集機能   TableCellEditor

今回のケースでは、
  id     int型 プライマリキー   intではなく、Integer
  date1 date型  java.util.Date ではなく java.sql.Date
構成のTableModelクラスをこしらえて、それを指定した new JTable(Model)を行ってみてはどうでしょうか。

SwingSet2 の Tableデモ が大変参考になると思います。
JDK6 になってから描画が格段に安定していますので、やりやすいと思います。

---------------------------------------------------------------------
To unsubscribe, e-mail: nbdiscuss_ja-unsubscribe@...
For additional commands, e-mail: nbdiscuss_ja-help@...