OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

JTableにおけるTABイベント取得について

  • 困ってます
  • 質問No.135310
  • 閲覧数932
  • ありがとう数2
  • 気になる数0
  • 回答数1
  • コメント数0

現在JTableを勉強しているのですが、
JTalbeでセルにフォーカスがある場合普通「TABキー」を押したときはフォーカスは右に移動すると思います。(右端にに到達したときは一段下がって左端といったように)

そのイベント(タブ移動)使ってTABでフォーカスが移ったCellを編集できるようにEditモードにしたいと考えています。現在JTABEを以下のように実装しています

-------ソース-------
resultTable = new ETable(vecResult,clmName);

ListSelectionModel cellSelectionModel = resultTable.getSelectionModel();

cellSelectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

cellSelectionModel.addListSelectionListener(this);

* 内部テーブルクラス
class ETable extends JTable{
public ETable( Vector rowList, Vector clmnList ){
super(rowList,clmnList);
DefaultTableColumnModel colModel = (DefaultTableColumnModel)getColumnModel();
//0番目のカラムを取得する
for (int i=0;i<clmnList.size();i++){
TableColumn col0 = colModel.getColumn( i );
//0番目のカラムにMyCellEditorをセットする
col0.setCellEditor( new MyCellEditor( new JTextField() ) );
}
}
}

public void valueChanged(ListSelectionEvent e) {
  //Cellの値が変わったときのイベント(APIによると…)
  *実際はセルをクリックするたびに走ってしまう(不思議)
 }
 
このソースに追加して実現することはできるでしょうか?

よきアドバイスをよろしくお願いします。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全1件)

  • 回答No.1
レベル9

ベストアンサー率 62% (48/77)

こんな感じで実装してみましたがどうでしょう? /** * 内部テーブルクラス */ class MyTable extends JTable{ public MyTable(){ super(); } public MyTable( TableModel ml ){ ...続きを読む
こんな感じで実装してみましたがどうでしょう?

/**
* 内部テーブルクラス
*/
class MyTable extends JTable{
public MyTable(){
super();
}
public MyTable( TableModel ml ){
super( ml );
}

/*行が変わったときに呼ばれる*/
public void valueChanged( ListSelectionEvent e ){
int nRow = this.getSelectedRow();
int nCol = this.getSelectedColumn();
if ( (nRow != -1) && (nCol != -1) ){
this.editCellAt( nRow, nCol );
}
super.valueChanged( e );
}

/*列が変わったとき*/
public void columnSelectionChanged( ListSelectionEvent e ){
int nRow = this.getSelectedRow();
int nCol = this.getSelectedColumn();
if ( (nRow != -1) && (nCol != -1) ){
this.editCellAt( nRow, nCol );
}
super.columnSelectionChanged( e );
}
}


ちなみにコメントにも記述しましたが、valueChangedは行が変わったときに
走り、columnSelectionChangedは列が変わったときに走るので両方書いて
おくと矢印キーを押して上下に移動したときにもedit状態になります。
補足コメント
noname#1752

列が変わったときや行が変わったときのイベントは拾得るのですがやはり、Tabややじるしキーでフォーカスがセル単位で変わった時にフォーカスのあるセルをエディットモード(セルがへこんでそこにカーソルが存在する状態)にすることができないです。

ありがとうございました。申し少しがんばってみます。
投稿日時 - 2001-09-18 10:17:28
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ