ゲンゾウ用ポストイット

Java、Groovy、Linux関連の備忘録

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

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