JTableのセルカーソルの位置(その3)
2019.04.26 (金) 02:07
ugnag
さて、ActionMapに設定するActionオブジェクトの処理だが、
基本的には、
元々のActionオブジェクトの処理の実行前と実行後で、
セルカーソルの位置が変わっていたら、イベントを発生させる
という処理になる。
ただし、エンターキ/TABキーの場合、changeSelectionメソッドから発生するイベントと重複するケースがある。
どのような時に重複するか整理してみることにする。
前回のエンターキー/TABキーに関連するもので関係のありそうなキーワードとして次のものがある。
・範囲が選択されている状態で
・セルカーソルが選択範囲の外にある時に
※「範囲が選択されている状態で」というのは、行/列のどちらかが複数選択されている状態を指す。
この2つの状態で、イベントを発生させるかどうかをまとめると、
範囲が単数 & セルカーソルが範囲の中
→発生させない
範囲が単数 & セルカーソルが範囲の外
→発生させる
範囲が非単数 & セルカーソルが範囲の中
→発生させる
範囲が非単数 & セルカーソルが範囲の外
→発生させる
となる。
まとめると、
●エンターキー/TABキーの場合、
「範囲が単数でセルカーソルが範囲の中」以外の場合、
イベント発生処理実行。
●ctrl + カーソルキーの場合
イベント発生処理実行
※イベント発生処理
元々のActionオブジェクトの処理の実行前と実行後で、
セルカーソルの位置が変わっていた場合のみ、イベントを発生させる
となる。
エンターキー/TABキーとctrl+カーソルキーで処理を共通化できそうだ。
(ただし、条件分岐は必要)
新しいActionオブジェクトのactionPerformedの処理イメージは
次のような形だ。
・現状のセルカーソル位置を記憶
・元々のActionオブジェクトを実行
・イベント用処理
これを行うために、クラスをひとつ定義することにする。
[7] beginning... [9] >>
[1] comments (0)
-
[0] [top]