---
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}キーでセルのフォーカスが次行に移動するように設定します。

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

* サンプルコード [#sourcecode]
#code(link){{
InputMap im = table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
KeyStroke tab   = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0);
KeyStroke tab = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0);
KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
im.put(tab, im.get(enter));
}}

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

----
逆遷移のKBD{Shift+Tab}などに対応する場合は、修飾子を`0`ではなく、`InputEvent.SHIFT_DOWN_MASK`にした`KeyStroke`を`InputMap`に設定します。

#code{{
KeyStroke stab   = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, InputEvent.SHIFT_DOWN_MASK);
KeyStroke stab = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, InputEvent.SHIFT_DOWN_MASK);
KeyStroke senter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, InputEvent.SHIFT_DOWN_MASK);
}}

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

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