[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends:00308] JTable のセルにチェックボックスを表示させる際にエラーが発生する



いつも大変お世話になっております。

JTableクラスを使用して8行2列のテーブルを生成した際に、
2列目のセル中にチェックボックスを表示させたいと思っておりまして、
本を参考にしてコードを書いたのですが、原因が分からないエラーが
発生してしまって困っております。

表示のさせ方の方針としましては、getColumnClass(int column)を
オーバーライドして、2列目(column==1)の時に、Booleanクラスを
返すようにしています。言葉では説明しにくいのでその部分のコードを
記載します。
public Class getColumnClass(int column){
    if(column == 1){
        return(Boolean.class);
    }
    return (super.getColumnClass(column));
}

問題になっているのは、上記のコードで2列目のカラムのクラスを
Booleanにする前に、コンストラクタ内でテーブルを生成する際に
呼び出すスーパークラスのコンストラクタのタイプによって、問題なく
チェックボックスが表示される場合と、エラーが出てテーブル自体が
表示されなくなってしまう場合がありまして、私としては後者のコンストラクタを
使用したいと思っているところです。

問題なく実行できる際に呼び出しているコンストラクタは、
public JTable(int numRows,int numColumns)のタイプで、
行数列数のみを指定してテーブルを生成する場合には問題なくチェックボックスが
表示されます。

私が使用したいのは、配列要素を指定してテーブルを生成させるタイプで、
public JTable(Object[][] rowData,Object[] columnNames)です。配列の型には、
staticのObject型を使用しています。二次元配列の第二要素は””にしています。
例) static Object[] columnNames={"項目","監視"};
       static Object[][] rowData={ {"ディスク",""},{"LAN",""},....};

 このタイプを使用して、ヘッダと一列目のカラムに項目を表示させて、同時に
2列目にはチェックボックスを表示させようとすると、エラーが大量に出てしまい、
テーブルが表示されません。
正確には、グレーのフレームのみ表示されるのですが、マウスで適当に
あちらこちらをクリックすると一行ずつ表示されるのですが、そのたびに大量のエ
ラーが
出てしまいます。
エラーのタイプは、java.lang.ClassCastExceptionです。

私としては、テーブルを生成する際に、第一引数に指定している配列でセットしてい
る
クラスと、getColumnClassで指定するBooleanクラスとが不整合を起こしているのが
原因なのかもしれないと考えているのですが、どのように対応すればよいのかが分か
りません。

過去ログも参照しましたが、私の現象と同じようなログが見つかりませんでした。

どなたか、詳しい方がいらっしゃいましたらアドバイスいただけませんでしょうか。
お忙しいところ恐縮ですが宜しくお願いいたします。

窪田

環境:
OS WindowsXP Professional
SDK SDK_1.4.1_03
IDE Eclipse2.1.1