現在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によると…)
  *実際はセルをクリックするたびに走ってしまう(不思議)
 }
 
このソースに追加して実現することはできるでしょうか?

よきアドバイスをよろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

こんな感じで実装してみましたがどうでしょう?



/**
* 内部テーブルクラス
*/
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状態になります。

この回答への補足

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

ありがとうございました。申し少しがんばってみます。

補足日時:2001/09/18 10:17
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q一眼レフカメラにオートフォーカスはないですよね?

普通のビデオカメラにオートフォーカス機能がついていますが、一眼レフカメラにはないですよなね?

Aベストアンサー

静止画のオートフォカスについては、他の方の回答をご覧ください。

従来、動画撮影ではオートフォーカスが効かないのが常識でした。
しかし、厳密にはミラーレスなので一眼レフとはいいがたいのですが、レンズ交換式でパナソニックの
LUMIX DMC-GH1(2009年発売)などで動画撮影中のオートフォーカスが実現されるようになり、
高級機では動画撮影中のオートフォカスが実現されるようになりました。

たとえば、ニコンのD300Sでは、カメラ本来のTTL位相差検出方式ではありませんが、動画撮影中はコントラストAF方式で動作させるようになりました。
http://www.nikon-image.com/products/camera/slr/digital/d300s/features03.htm
またソニーのα55は、透過ミラーで動画撮影中のオートフォーカスを実現しています。
http://www.sony.jp/CorporateCruise/Press/201008/10-0824/

QA a = new A(){}; の構文の意味が分からない。

下記サイトのコードを読んでいて、

ResponseListener listener = new ResponseListener() {
//略
};

という書き方があったのですが、どういう意味になるのでしょうか?
インスタンスの作り方は単に

A a = new A();

だと思うのですが…。

http://www.snmp4j.org/doc/org/snmp4j/Snmp.html

Aベストアンサー

無名クラスと呼ばれるものよ。
私も良くやるわ。

ちなみに
A a = new A();
はできないわよ。
Aはインターフェースだからね。


上記の場合、正式に実装するなら、
ResponseListenerをimplementsした
MyResponseListener(仮名)を別途作成し、
それを
ResponseListener listener = new MyResponseListener();
とする必要があるわ。
でも、このMyResponseListenerは
今ここでしか使わない、他からまったく参照する必要のない
超ローカルなクラスなのよ。
このメソッドが終了すればGCにかけてもいいわけ。
そんな場合、わざわざクラスを1つ作る必要なくて
その場でちょちょいとやってしまうことができるのよ。
それが無名クラスっていう実装方法よ。

http://www.javaroad.jp/java_class15.htm

FileFilterやCompare、Runnableなんかで
他のクラスで再利用しないときは良くやるわ。

無名クラスと呼ばれるものよ。
私も良くやるわ。

ちなみに
A a = new A();
はできないわよ。
Aはインターフェースだからね。


上記の場合、正式に実装するなら、
ResponseListenerをimplementsした
MyResponseListener(仮名)を別途作成し、
それを
ResponseListener listener = new MyResponseListener();
とする必要があるわ。
でも、このMyResponseListenerは
今ここでしか使わない、他からまったく参照する必要のない
超ローカルなクラスなのよ。
このメソッドが終了すればGCにかけても...続きを読む

Qライカカメラのオートフォーカス

ライカのMシリーズはレンズを交換できると思いますが、
これらのレンズはすべてマニュアルフォーカスなのでしょうか?
オートフォーカスのレンズは出ていませんか?
また今度発売されるデジタルカメラM8もやはりマニュアルフォーカスレンズのみなのでしょうか?

ライカに詳しい方、ご回答お願いしますm(_ _)m

Aベストアンサー

 potepotenさん こんばんは

 ライカMシリーズのカメラは、残念ながら最新のM7であってもオートフォーカスと言う便利な機能は有りません。したがってライカMシリーズに対応するレンズは全てマニュアルフォーカス用のレンズです。

 近い将来発売されるM8はデジカメと言われていますが、多分ライカの考えからしてオートフォーカスは搭載されないと思います。理由として、今まで発売された各型はM3~M7に至までそれまで発売されたバルナックライカ用のLマウントレンズを含めて全て同じ環境で使える環境を整えているのが特長だからです。もしM8がオートフォーカスを採用したとしたら、フランジバックを長くして、中間に現行のM型叉はL型のレンズに対応したオートフォーカス対応のマウントアダプターを作ると思います。そんな事をしたらM5以外のM型ライカの形状を変える事になってしまいます。そう言うことは多分ライカはしないと思いますから、M8もMFのカメラで作られると思います。

Qclass Test_A {  main(){}}の実行順序は?

public class Test_A {
public static void main(){

int a = 0;
int b = 1;

}
}
例えば上のようなサンプルで何故 main()がクラスTest_A の中に挟まっているのでしょうか?実行順序としては main()が終了したら、クラスTest_A の方はどうなるのでしょうか? main()からプログラムが始まるのは分かるのですが、その後の動作が分かりません。よろしくお願いします。 

Aベストアンサー

>main()がクラスTest_A の中に挟まっているのでしょうか

Javaは、全てのプロパティ、メソッドはどこかのクラスに属していないといけないからです。
mainメソッドであっても例外ではありません。

>main()からプログラムが始まるのは分かるのですが、その後の動作が分かりません。

これを考える上で最も重要なのはmainメソッドがstaticであることです。
staticなメソッドは、そのクラスのインスタンスを作らなくても、
つまり、new Test_A();としなくても実行することが可能です。
プログラム実行時には、Test_Aクラスのインスタンスは生成されません。
質問のコードでは変数a,bに値が代入され、それで終わりです。

Javaでは、(正確にはJavaVMは)実行するclassファイルにある、
String[]引数を持ったvoid mainメソッドを実行する仕様になっています。
しかし、mainメソッドを実行するときには何のインスタンスも生成されていないので、
何かのインスタンスのメソッドを実行することはできません。
なので、staticなメソッドでないとJavaVMが実行できないのです。
さらに、JavaVMからアクセス可能なスコープを与える必要があるので、
publicである必要もあるのです。

あとは、そのmainメソッドに指定されたコードを実行し、mainメソッドの最後まで処理が進んだら
そこでJavaVMが終了し、プログラムも終了します。

※細かい話ですが、main()からプログラムは始まりません。
正確に言うと、引数なしのmain()メソッドは他のメソッドと何ら代わりがありません。
プログラムを始めるには、
アクセススコープがpublicで、staticな戻り値のなく、引数にString配列を取るmainメソッド
であることが必要です。つまり、
public static void main(String[] args)
とするのが通常です。
試しに質問のコードをjavaコマンドで実行すると、NoClassDefFoundErrorが出るはずです。

>main()がクラスTest_A の中に挟まっているのでしょうか

Javaは、全てのプロパティ、メソッドはどこかのクラスに属していないといけないからです。
mainメソッドであっても例外ではありません。

>main()からプログラムが始まるのは分かるのですが、その後の動作が分かりません。

これを考える上で最も重要なのはmainメソッドがstaticであることです。
staticなメソッドは、そのクラスのインスタンスを作らなくても、
つまり、new Test_A();としなくても実行することが可能です。
プログラム実行時...続きを読む

Qフィルムカメラの種類やオートフォーカス機能などについて教えて下さい

事情があってカメラの機能についていろいろ調べています。

●フィルムカメラのピントの合わせ方としては…
1.一眼レフカメラのようにレンズを回しながらピントをあわせる
2.所謂バカチョンカメラ。オートフォーカスであわせる
3・使い捨てカメラのように半押しも必要なし

この三種類しかないのでしょうか?

●それと、オートフォーカスというのは「半押し→撮影」のことを指すのでしょうか?

●デジカメには
aコンパクトカメラ
b本格的な写真を撮るための機能がついた一眼レフカメラに近いコンパクトカメラ
c一眼レフ
……の三種が主に家電店で販売されていますが、bのようなポジションのフィルムカメラってあったんでしょうか?

どれか一つでも、または分かる範囲でも構いませんのでどなたか教えて下さいませんでしょうかm(--)m

Aベストアンサー

ピント合わせ:
・離れた位置に有る鏡をファインダーから見える絵と重ね合わせてズレが最小になった時にピントが合った事にする物や
・赤外線や超音波をカメラから物体に発射して距離を測定して、その分のレンズを動かしてピントを合わせる物や
・入ってきた光の量を計算して(量が最大になった時がピントが合った時なので)その時にレンズを動かすのを止める機構を持った物や、
他にも沢山ピント合わせの機構はあります。

超音波や赤外線なんて真っ暗でもピント合わせできるのですごかったんですけどねぇ(でも真っ暗だと写らない(^^;)

●それと、オートフォーカスというのは「半押し→撮影」のことを指すのでしょうか?
 オートフォーカスは、カメラがピント合わせの操作をしてくれる方法です、半押し→撮影は、写真を撮る時の手順の一つです。
 半押ししても何もしないカメラがありますので。

レンズが交換できない一眼レフカメラというのがありましたし、マニュアルフォーカスのコンパクトカメラや、シャッタースピードや絞りを自分で調節できるコンパクトカメラは多々あります。

バカチョンの言いまわしはコンパクトカメラになりました。

ピント合わせ:
・離れた位置に有る鏡をファインダーから見える絵と重ね合わせてズレが最小になった時にピントが合った事にする物や
・赤外線や超音波をカメラから物体に発射して距離を測定して、その分のレンズを動かしてピントを合わせる物や
・入ってきた光の量を計算して(量が最大になった時がピントが合った時なので)その時にレンズを動かすのを止める機構を持った物や、
他にも沢山ピント合わせの機構はあります。

超音波や赤外線なんて真っ暗でもピント合わせできるのですごかったんですけどねぇ...続きを読む

Q"try{}catch(){}"文で"close()"はどのように書けばよいのでしょうか。

こんにちは、片岡と言います。

プログラム1は、Java言語で学ぶデザインパターン入門(結城浩さん著)の
433ページを参考にして書きました。

私は、プログラム1のclose()の書き方よりもプログラム2のようなclose()の書き方が、
良いと思っています。
なぜならば、プログラム1では、out.writeObject(memento)行の例外によって、
close()が実行されないからです。

私のこの考え方は正しいのでしょうか。
もっと良いclose()の書き方はあるのでしょうか。
ご存知の方はいらっしゃいませんか。

●プログラム1
public class Main {
public static void saveMemento(Memento memento) {
try {
ObjectOutput out = new ObjectOutputStream(new FileOutputStream("game.dat"));
out.writeObject(memento);
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
… //以下略
}

public class Memento implements Serializable {
… //以下略
}


●プログラム2
public class Main {
public static void saveMemento(Memento memento) {
try {
ObjectOutput out = new ObjectOutputStream(new FileOutputStream("game.dat"));
out.writeObject(memento);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
… //以下略
}

public class Memento implements Serializable {
… //以下略
}


なお、私の環境は以下の通りです。
OS: Microsoft Windows XP Professional SP2
開発環境:Eclipse 3.2.2
java: java version "1.4.2_13"

こんにちは、片岡と言います。

プログラム1は、Java言語で学ぶデザインパターン入門(結城浩さん著)の
433ページを参考にして書きました。

私は、プログラム1のclose()の書き方よりもプログラム2のようなclose()の書き方が、
良いと思っています。
なぜならば、プログラム1では、out.writeObject(memento)行の例外によって、
close()が実行されないからです。

私のこの考え方は正しいのでしょうか。
もっと良いclose()の書き方はあるのでしょうか。
ご存知の方はいらっしゃいませんか。

●プロ...続きを読む

Aベストアンサー

>私のこの考え方は正しいのでしょうか。
正しいです。質問者さんが書かれているやり方が一般的です。
念のため書いておきますが、outをtryの外で宣言しないとコンパイルが通りません。

まぁ、あくまでデザインパターンを学ぶための本ですから、細かなコーディングについて気にする必要はないでしょう(疑問を持つことは良いことですが)。

Q《ウェブカメラの映像にソフトフォーカス効果をかける方法はないでしょうか

《ウェブカメラの映像にソフトフォーカス効果をかける方法はないでしょうか》

電化製品店でウェブカメラを安価で購入しました。
Skypeで英会話のレッスンを受ける際 一部で使用の予定ですが
あまりにくっきりはっきり写るため もう少し目にやさしく見えないものかしら
と思案中です。
明度 鮮度 色合いなどいろいろ工夫しましたが
すこし凸に写る顔にはソフトフォーカスでもかけたいな、と(笑)

レンズのすぐ前にサランラップを当ててみましたが 何の変化もなし。
フィルターの役割にはならないようです。


高価なレンズなら可能なのでしょうか。
でも 高価なものを新しく買い求める余裕はありません。


名案をお待ちしています☆

Aベストアンサー

軽く油を塗ればソフトフォーカスがかかります。
(クリームなどで大丈夫でしょう)

Q&= ~0x0c; &= ~0x03; |=1;

JavaScriptで分からないコードがあるので教えてください。


■変数設定
var hoge = 0;


■変数格納
・キーを押した時の条件分岐
  ~なら hoge |= 1;
  または hoge |= 2;
  または hoge |= 3;
  または hoge |= 8;

・キーを離した時の条件分岐
  ~なら hoge &= ~0x0c;
  または hoge &= ~0x03;


■変数使用
・swithch文の条件分岐に利用
  (hoge&0x03)
  (hoge&0x0c)


■質問
・どういう意味でしょうか?
・文字コード?
・ビット演算?

Aベストアンサー

ビット演算してるわね

x = x + a

x += a
って書くことができるの

つまり
hoge |= 1

hoge = hoge | 1
のことね

~はNOTのこと

0x
はアスキーコードの16進数表記ねきっと

0x0c は改ページを意味していて
0x03 は文章の最後を意味している
と思われるわ
全文がないので推測だけど

Q一眼レフのカメラで絞りを絞ったときのフォーカス合わせについて

一眼レフのカメラ初心者です.

CANON EFというカメラを所持しています.
絞りを手動で絞ったとき,ファインダー内が暗くなるので
フォーカスが合っているのか良く分かりません.
レンズに入ってくる光量が少なくなるので暗くなるのは分かりますが,
どうやって確認すればいいのでしょうか?
玄人の方には初歩的な事かも知れませんが,よろしくお願いします.

Aベストアンサー

> 絞りを手動で絞ったとき,ファインダー内が暗くなるので
> フォーカスが合っているのか良く分かりません.
・キヤノンEFか自動開放測光機種ですから、絞りをAマークや○マークから解除してもファインダー像は暗くなりません。

現在、そのカメラは、絞り込み実絞りモードに設定しているから暗くなるのじゃ。
つまり、、、
1・セルフタイマーレバーを右に倒れていて。
2・セルフタイマー下の絞り込み測光レバーを真ん中の「L」にセットしているからだよ。

通常の撮影時は、
1・セルフタイマーは中央。
2・セルフタイマー下の絞り込み測光レバーは右側にセットして使うのじゃ。

もしも、通常の撮影時の設定でも、ファインダーが暗くなるようだと、EFは故障していますぞ。

QJavaScriptで【window.google={kHL:"ja"};】という記述はどういう意味?

JavaScriptで【window.google={kHL:"ja"};】という記述はどういう意味?


YOUTUBE日本語版
http://jp.youtube.com/
のHTMLソースを見ていたら、



<script type="text/javascript">
    window.google={kHL:"ja"};
</script>


という記述を目にしたのですがこれはどういう意味あいというか目的のものなのでしょうか?


教えていただければ幸いです。

Aベストアンサー

これは、window.googleに'kHL'というキー(値は'ja')を持つ連想配列を
作成しています。

JavaScriptでの連想配列は

var 変数名 = {
キー : '値',
キー : '値',
:,
キー : '値'
};

というような感じで作成します。
キーはダブルクォートまたはシングルクォートで囲まなくても
いいようです。

参考URL:http://javascriptist.net/docs/basic_hash.html,http://www.openspc2.org/JavaScript/kouza2007/array/hash/index.html


人気Q&Aランキング

おすすめ情報