- PR -

JTableのセルをダブルクリック

1
投稿者投稿内容
maru
ぬし
会議室デビュー日: 2003/01/27
投稿数: 412
投稿日時: 2003-06-23 13:57
お世話になってます。

今、JTableを使ってファイルのリスト表示みたいなものを作っています。
普通、セルをダブルクリックするとデフォルトセルエディターが表示されます。

現在、セルの一部をエクスプローラの詳細表示のように縮小アイコンとファイル名を
表示するために、デフォルトセルレンダーを自作して、getTableCellRendererComponent
でアイコン表示付のラベルを返すようにしています。ラベルなので文字が太くなってます。

で、普段はきちんとアイコン表示付のラベルでファイル一覧が表示されるのですが、
それをダブルクリックしたときに、デフォルトセルエディターが表示されてしまい、
アイコンが消えて文字も普通の文字に変わってしまいます。

ダブルクリックしてもデフォルトセルエディターを表示させずに、mouseClickedイベントを
発生させたい場合はどのようにするのでしょうか?
ご存知の方おられませんか?

OS:Win2000
JDK:1.4.1

[ メッセージ編集済み 編集者: maru 編集日時 2003-06-23 14:52 ]
ゆう
ベテラン
会議室デビュー日: 2003/06/20
投稿数: 56
投稿日時: 2003-06-23 15:09
はじめまして。

引用:

ダブルクリックしてもデフォルトセルエディターを表示させずに、mouseClickedイベントを
発生させたい場合はどのようにするのでしょうか?
ご存知の方おられませんか?



私が以前とった方法ですと、DefaultTableModelを
継承したオリジナルのテーブルモデルをつくって使いました。
JTableを継承しているならば、isCellEditable()をオーバーライドして
実現できると思います。

class ReadOnlyTableModel extends DefaultTableModel {
 public boolean isCellEditable(int rowIndex,int columnIndex) {
  if (columnIndex == 1) {
   return false;
  } else return true;
 }
}

上の例ですと、1カラム目のセルが編集不可になります。
これでどうでしょうか?


[ メッセージ編集済み 編集者: ゆう 編集日時 2003-06-23 15:18 ]
maru
ぬし
会議室デビュー日: 2003/01/27
投稿数: 412
投稿日時: 2003-06-23 15:47
こんにちは。
早速の返答ありがとうございます。

ご教示のように、JTableのisCellEditableをオーバーライトする事でできました。
こういう手があったのを忘れてました。
Javaは○○をオーバーライトする事でかなり細かなことができますが、なれないうちは
思いつかないですよねぇ。私だけ?

setCellEditable 見たいなメソッドを一生懸命探してました。
ゆう
ベテラン
会議室デビュー日: 2003/06/20
投稿数: 56
投稿日時: 2003-06-23 17:21
こんにちは。お世話になってます。

引用:

Javaは○○をオーバーライトする事でかなり細かなことができますが、なれないうちは
思いつかないですよねぇ。私だけ?



今まで10年近くCばかりを使っていて、先月からJavaをはじめたのですが
慣れるまではなかなか時間がかかりそうですね。
私もオーバーライドはすぐには思いつかないです。
JTableに関しては先日プログラムしたのでお返事できましたが…。
なので、maruさんだけではないと思いますのでご安心を。


[ メッセージ編集済み 編集者: ゆう 編集日時 2003-06-23 17:25 ]
1

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