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]


[sb 1.10R]