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

[jfriends:00302] Re: JTable で列全体をFIX(書き込み不可)に出来ませんでしょうか



お世話になります。
先ほど解決したとレスしましたが、
まだ解決しない項目が残っていました。

下記のソースで、テーブルの生成時に配列からデータを
読み込ませてテーブルを生成させようとすると、

「スーパータイプのコンストラクタの呼び出し前はdataを参照できません」

というコンパイルエラーが出てしまいます。
JTableクラスを継承したクラス内でsuper()によってJTableのコンストラクタ
を呼び出す方法では、テーブルのデータとカラム名を配列から
読み込ませることは出来ないのでしょうか。

どなたか解決方法をご存知の方はいらっしゃいませんでしょうか。
宜しくお願いいたします。

いちおうコードを載せます。

窪田
----------コード------------
import java.awt.*;
import javax.swing.*;


class TableTest14 extends JFrame{

 public TableTest14(){
      FixTable table = new FixTable();
      JScrollPane scr = new JScrollPane(table);
      this.getContentPane().add(scr);
 }


 //Main
 public static void main(String[] args){
      JFrame jframe = new TableTest14();
      jframe.setTitle("Cell Editable Test");
      jframe.setSize(640,480);
      jframe.setVisible(true);
      jframe.setDefaultCloseOperation(jframe.EXIT_ON_CLOSE);
 }
}

class FixTable extends JTable{
     //テーブルのプロパティデータ
     protected String[]  columnNames={ "監視項目","状態"};
     protected String[][] data={
       {"筐体内温度高異常",""},
       {"CPU故障",""},
       {"内蔵ファン故障",""},
       {"内蔵ディスク故障",""},
       {"内蔵LANカード故障(主系)",""} };

        //isCellEditableメソッドをオーバーライドする
     public boolean isCellEditable(int row,int column){
          //一列目のセルは全て編集不可、それ以外は編集可能にする
          if(0 == column){
               return false;
          }else{
               return true;
          }
     }

     //コンストラクタ
     public FixTable(){
          super(annDataServer1,columnNames); ←これが上手くいかない
     }
}
----------コード------------


----- Original Message ----- 
From: "Hajime Kubota" <kubota-hajime@xxxxxxxxxxxx>
To: <jfriends@xxxxxxxxxxxx>
Sent: Wednesday, March 24, 2004 2:22 PM
Subject: [jfriends:00301] Re: JTable で列全体をFIX(書き込み不可)に出来
ませんでしょうか


> 荻野様
>
> ご回答ありがとうございます。
> もう少し粘ってサンプルを直してみたら、無事上手くいきました。
> JTableクラスを継承したクラス中でテーブルを生成する時の
> コードの記述方法に問題があったようでした。
> お騒がせ致しました。
>
> 窪田
>
> > class OrgTable extends JTable{
> >      //ここでオーバーライド(一列目のみ編集不可にする)
> >      public boolean isCellEditable(int row,int column){
> >           if(0 == column){
> >                return false;
> >           }else{
> >                return true;
> >           }
> >      }
> >
> >   //コンストラクタ
> >      public OrgTable(){
> >           //JTable table = new JTable(5,4);
>             super(5,4); ←修正
> >      }
>
>
>
>
> ----- Original Message ----- 
> From: "Hajime Kubota" <kubota-hajime@xxxxxxxxxxxx>
> To: <jfriends@xxxxxxxxxxxx>
> Sent: Tuesday, March 23, 2004 5:55 PM
> Subject: [jfriends:00298] Re: JTable で列全体をFIX(書き込み不可)に出
来
> ませんでしょうか
>
>
> > 山田様
> >
> > ご返答ありがとうございます。
> > さっそくサンプルプログラムを書いて実験しようと思ったのですが、
> > 肝心のテーブルが表示されなくて困っています。
> > 表題の議論以前のレベルで大変申し訳ありませんが、
> > いちおうコードを載せてみます。
> >
> > もともと、JFrameクラスを継承したクラスの中でテーブルを生成させて
> > いたのですが、isCellEditable()をオーバーライドするために、
> > JTableクラスを継承したOrgTableクラスを作って、
> > その中で5行4列のテーブルを生成させているのですが、
> > どうも上手く表示されません。
> >
> > これでは、だめなのでしょうか。
> > お忙しいところ恐縮ですが、ご教授願えませんでしょうか。
> > 宜しくお願いいたします。
> >
> > 窪田
> >
> >
> > ---------- サンプル------
> > import java.awt.*;
> > import javax.swing.*;
> >
> > class TableTest15 extends JFrame{
> > //コンストラクタ
> >  public TableTest15(){
> >       OrgTable table = new OrgTable();
> >       JScrollPane scr = new JScrollPane(table);
> >       getContentPane().add(scr);
> >  }
> >
> >  //メイン
> >  public static void main(String[] args){
> >       JFrame jframe = new TableTest15();
> >       jframe.setSize(640,480);
> >       jframe.setVisible(true);
> >       jframe.setDefaultCloseOperation(jframe.EXIT_ON_CLOSE);
> >  }
> > }
> >
> > class OrgTable extends JTable{
> >      //ここでオーバーライド(一列目のみ編集不可にする)
> >      public boolean isCellEditable(int row,int column){
> >           if(0 == column){
> >                return false;
> >           }else{
> >                return true;
> >           }
> >      }
> >
> >   //コンストラクタ
> >      public OrgTable(){
> >           JTable table = new JTable(5,4);
> >      }
> > }
> >
> > --------------ここまで----
> >
> > > こんにちは、山田といいます。
> > >
> > > AbstractTableModel クラスの
> > >
> > > public boolean isCellEditable(int rowIndex, int columnIndex) {
> > > return false;
> > > }
> > >
> > > メソッドを override すればよいのでは、VisualBasic は使ったことがないの
で
> > > 分かりませんが...
> > >
> > > Hajime Kubota wrote:
> > >
> > > >いつもお世話になっております。
> > > >
> > > >JTableオブジェクトで、2列10行のテーブルを作成したのですが、
> > > >1列目はあらかじめ内容が決まっていてテーブル生成時に
> > > >データを入力済みであるので、この行をFIXというか書き込み不能
> > > >な状態にしたいのですがどのようにすればよいのでしょうか。
> > > >
> > > >VisualBasicでいえばテーブルのFixcolsというプロパティで
> > > >指定すると上記の問題を解決できるのですが、Javaは始めた
> > > >ばかりなので良く分かりません。
> > > >
> > > >どなたかご教授願えませんでしょうか。
> > > >宜しくお願いいたします。
> > > >
> > > >窪田
> > >
> >
> >
>
>