- PR -

valueChangedについて

1
投稿者投稿内容
be1300cc
ベテラン
会議室デビュー日: 2002/07/04
投稿数: 88
投稿日時: 2003-06-09 11:11
お世話になります。be1300ccです。
現在swingにて以下のような処理を行うロジック組む際に悩んでいます。
・JTableで任意のセルが選択されたら、選択したデータがテキストフィールドにコピーされる。
・そのコピーされたデータを更新し、更新データをJTableに戻す。

JTableで任意のセルを選択なので、valueChangedメソッドをしようしているのですが、
コピーされたデータを更新し、編集更新ボタンを押下後、エラーが出てしまい解決できず困ってます。

public void valueChanged(ListSelectionEvent e){

int row = jTable.getSelectedRow();
int col = jTable.getSelectedColumn();
if (e.getValueIsAdjusting()){
return;
}else{
Object obj = jTable.getValueAt(row,col);
String ts = (String)obj;
jTextField6.setText(ts);
}

使用方法は、多分あっていると思うのですが・・・。
どなたか、ご享受お願いします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2003-06-09 11:17
引用:

JTableで任意のセルを選択なので、valueChangedメソッドをしようしているのですが、
コピーされたデータを更新し、編集更新ボタンを押下後、エラーが出てしまい解決できず困ってます。


どの様なエラー(例外?)がでていますか?
スタックトレースを含む例外の情報は問題解決に非常に有用ですよ。
be1300cc
ベテラン
会議室デビュー日: 2002/07/04
投稿数: 88
投稿日時: 2003-06-09 11:21
インギさん、御返答ありがとうございます。
現在出ているエラーは、
java.lang.ArrayIndexOutOfBoundsException: -1 < 0が出ています。
また、下の方でObject obj = jTable.getValueAt(row,col);の部分もエラーとして
出ています。
be1300cc
ベテラン
会議室デビュー日: 2002/07/04
投稿数: 88
投稿日時: 2003-06-09 14:45
エラーの件は、何とか解決できました。
ありがとうございました。

また質問なのですが、原因はvalueChangedメソッドだったのですが、
これ以外に以下の処理を行いたい場合、
・JTableで任意のセルが選択されたら、選択したデータがテキストフィールドにコピーされる。
・そのコピーされたデータを更新し、更新データをJTableに戻す。

該当するメソッドは、何かありますでしょうか?
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2003-06-10 21:25
JTableの使い方により一概に言えないので、一般的と思われるヒントを示したいと思います。参考にして APIドキュメントをじっくり読んでみてください。

> ・JTableで任意のセルが選択されたら、選択したデータがテキストフィールドに
> コピーされる。
選択モデルのオブジェクトにリスナ設定して選択イベントを受け取る。
選択モデルから選択行のインデクスが取り出せます。
カラムインデクスが必要ならカラムモデルからカラムの選択モデルを取得する。
これで、セルを特定し、テーブルからgetValueAt()する。
その値をテキストに。

ただ、デフォルトではカラムの選択は無効だし、複数の行が選択できてしまうので
多少、設定を変えたほうが使いやすさも、見た目も良くなるでしょう。

> ・そのコピーされたデータを更新し、更新データをJTableに戻す。
これは、テキストフィールドのアクションをリスナで拾って、
テキストを取りだし、(必要ならそのセルで使われてるオブジェクトに変換し、)
setValueAt()する。

これで、テーブルとは別領域で編集ができるようになります。

でも、ご存知とは思いますが、TableCellEditorを使うと表の上で直接編集できるし、
場合によって(文字列とか数値とか)はそのほうが簡単と思われます。
1

スキルアップ/キャリアアップ(JOB@IT)