概要

JTableのセルを編集開始したときにセルエディタがフォーカスを取得するかどうかを設定で切り替えます。

サンプルコード

table.setSurrendersFocusOnKeystroke(true);
View in GitHub: Java, Kotlin

解説

  • table.setSurrendersFocusOnKeystroke(false);
    • JTableのデフォルト
    • キー入力でセル編集を開始した場合フォーカスはJTableに残る
      • このためキー入力でセル編集を開始した直後にCtrl+Aを入力するとJTableの行が全選択される
    • マウスクリックでセル編集を開始した場合はこのJTable#setSurrendersFocusOnKeystroke(...)の指定に依存せず、フォーカスはセルエディタに移動する
  • table.setSurrendersFocusOnKeystroke(true);
    • キー入力でセル編集を開始した場合フォーカスはセルエディタ(JTextField)に移動する
      • このためキー入力でセル編集を開始した直後にCtrl+Aを入力するとセルエディタ内の文字列が全選択される
    • Java 11以降ではJTable#putClientProperty("JTable.forceAutoStartsEdit", true);を指定した場合も同様の動作になる

参考リンク

コメント