• category: swing folder: ImplicitDownCycleTraversal title: FocusTraversalPolicyの自動的なフォーカスダウンサイクルを無効にする tags: [Focus, FocusTraversalPolicy] author: aterai pubdate: 2016-10-24T00:34:35+09:00 description: SortingFocusTraversalPolicyを設定したパネルで、暗黙的にフォーカスをダウンサイクルで移動しないように設定します。 image: https://drive.google.com/uc?export=view&id=1BhqefPKEKZ7kqrsjy2ySEncqitLXR7qrfw

概要

SortingFocusTraversalPolicyを設定したパネルで、暗黙的にフォーカスをダウンサイクルで移動しないように設定します。

サンプルコード

JPanel p = new JPanel();
LayoutFocusTraversalPolicy ftp = new LayoutFocusTraversalPolicy();
ftp.setImplicitDownCycleTraversal(false);
p.setFocusCycleRoot(true);
p.setFocusTraversalPolicy(ftp);
View in GitHub: Java, Kotlin

解説

上記のサンプルでは、SortingFocusTraversalPolicy#setImplicitDownCycleTraversal(...)で、暗黙的にフォーカスをダウンサイクルで移動するかどうかを切り替えて、子パネルへのフォーカス移動のテストを行っています。

  • SortingFocusTraversalPolicy#setImplicitDownCycleTraversal(true)
    • デフォルト
    • デフォルトフォーカスのJCheckBoxから、Tabキーで子パネル内のJTextAreaにダウンサイクルでフォーカスが移動可能
  • SortingFocusTraversalPolicy#setImplicitDownCycleTraversal(false)
    • 子パネルがsetFocusCycleRoot(true)の場合、デフォルトフォーカスのJCheckBoxからTabキーを押すと、これを飛ばしてJButtonにフォーカスが移動
    • 子パネルがsetFocusCycleRoot(false)の場合、デフォルトフォーカスのJCheckBoxからTabキーを押すと、JTextAreaにフォーカスが移動

参考リンク

コメント