ugnagブログ

たいした内容はありません。思いつきで書いているだけ。
開発日記がメインかな。

<< ボヘミアン・ラプソディー | main |

JTableの編集終了の動作

JTableで(JTextFieldによる)編集状態から、編集終了になる際のキーによる動作の違い。
TABキーを押すと、

・入力を終了し、カーソル移動



ENTERキーを押すと、

・入力を終了(カーソルは移動しない)



この差が何なのかを調べたら、編集に使用されるJTextFieldが、

ENTERキーを処理(Actionイベントを発生させる)しているため

ということがわかった。



試しに、JTextFieldのInputMapのENTERキーの割当を変えてみたところ、TABと同じ動作をするようになった。


ただし、1度使用すると、InputMapの内容が元に戻ってしまう。


このあたりは、DefaultTableCellEditorをカスタマイズなりする必要があるかもしれない。



もう1点、別件で。


JTableではTABキーを押すとカーソルが横方向に移動し、ENTERキーでは縦方向に移動する。

この動作は、JTableのInputMapの割当を変更すれば変更可能。


例えば、TABとENTERを入れ替えるには、

KeyStroke ks_ent = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
KeyStroke ks_tab = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0);

InputMap im = table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);

String cmd1 = (String)im.get(ks_ent);
String cmd2 = (String)im.get(ks_tab);
im.put(ks_ent, cmd2);
im.put(ks_tab, cmd1);



こんな感じ。

ただし、先に述べたように編集中からの動作は変わらない。

editorのInputMapの変更も同時に行う必要がある。
JAVA | comments (0) | -

Comments

Comment Form

本文に書いて下さい
本文にh抜きで書いて下さい