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]


[sb 1.10R]