textArea(JTextArea)で、タブによるフォーカス移動を実現したいとき

以下のようにkeyPressedイベントを設定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
    textArea(
        text:bind('statusMessageBody', target:model, mutual:true),
        rows:5,
        dragEnabled:true,
        keyPressed:{ e ->
if(e.keyCode == KeyEvent.VK_TAB) {
if(e.modifiers > 0)
e.source.transferFocusBackward()
else
e.source.transferFocus()
e.consume()
}
},
)

SwingのJTextAreaは、タブによるフォーカス移動をしたい場合にはCtrl+TabCtrl+Shift+Tabを入力しなければならない。

UI上ではTabShift+Tabでタブ移動可能な先入観があるが、これはおそらくブラウザ上での操作性に基づいているのだと思う。
それだけ近年のブラウザの操作性が普及している証拠なのだ。