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

Griffon, Groovy

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

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

Griffon, Groovy

Posted by genzouw