• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:JTableの次行にTabキーでフォーカスを移動
#navi(../)
*JTableの次行にTabキーでフォーカスを移動 [#ke417f84]
>編集者:[[Terai Atsuhiro>terai]]~
作成日:2005-04-18~
更新日:&lastmod;
---
category: swing
folder: SelectNextRow
title: JTableの次行にTabキーでフォーカスを移動
tags: [JTable, InputMap, Focus]
author: aterai
pubdate: 2005-04-18T01:45:22+09:00
description: KBD{Tab}キーでセルのフォーカスが次行に移動するように設定します。
image: https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTS5aM0UvI/AAAAAAAAAjg/g-wlrmrzml8/s800/SelectNextRow.png
---
* 概要 [#summary]
KBD{Tab}キーでセルのフォーカスが次行に移動するように設定します。

#contents
#download(https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTS5aM0UvI/AAAAAAAAAjg/g-wlrmrzml8/s800/SelectNextRow.png)

**概要 [#p82519c6]
Tabキーでセルのフォーカスが次行に移動するように設定します。
* サンプルコード [#sourcecode]
#code(link){{
InputMap im = table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
KeyStroke tab = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0);
KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
im.put(tab, im.get(enter));
}}

#screenshot
* 解説 [#explanation]
上記のサンプルでは、チェックボックスでKBD{Tab}キーでのフォーカスの移動(セル毎に移動)が、KBD{Enter}キーと同じ(行毎に移動)になるように切り替えています。

**サンプルコード [#q9096c71]
 InputMap im = table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
 KeyStroke tab   = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0);
 KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
 im.put(tab, im.get(enter));
- 逆遷移のKBD{Shift+Tab}などに対応する場合は修飾子を`0`ではなく`InputEvent.SHIFT_DOWN_MASK`にした`KeyStroke`を`InputMap`に設定する
#code{{
KeyStroke stab = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, InputEvent.SHIFT_DOWN_MASK);
KeyStroke senter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, InputEvent.SHIFT_DOWN_MASK);
}}

-&jnlp;
-&jar;
-&zip;
* 参考リンク [#reference]
- [https://community.oracle.com/thread/1484284 Swing (Archive) - JTable skiping the cells disableds]
-- 編集不可のセルを飛ばして、KBD{Tab}キーでフォーカス移動を行うサンプル

**解説 [#l156a485]
上記のサンプルでは、チェックボックスでTabキーでのフォーカスの移動(セル毎に移動)が、Enterキーと同じ(行毎に移動)になるように切り替えています。

逆遷移のShift+Tabなども対応する場合は、修飾子を0の代わりにInputEvent.SHIFT_MASKにして、同様に変更しています。

[[Java Forums - JTable skiping the cells disableds>http://forum.java.sun.com/thread.jspa?forumID=57&threadID=509913]]に、編集できないセルを飛ばして、Tabキーでフォーカス移動することができるサンプルがあるので参考にしてください。

**参考リンク [#ub9a007e]
-[[Java Forums - JTable skiping the cells disableds>http://forum.java.sun.com/thread.jspa?forumID=57&threadID=509913]]

**コメント [#h20d6278]
* コメント [#comment]
#comment
#comment