JTableの編集終了の動作
2019.04.17 (水) 02:27
ugnag
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の変更も同時に行う必要がある。
[7] beginning...
[1] comments (0)
-
[0] [top]