• category: swing folder: DisablePrefixMatchSelection title: JListの先頭文字キー入力による検索選択を無効にする tags: [JList, JTree] author: aterai pubdate: 2011-09-12T16:36:34+09:00 description: JListにフォーカスがある状態で英数字キー入力をしたときに先頭文字が一致するアイテムを検索して選択する機能を無効にします。 image: https://lh6.googleusercontent.com/-_wtzuIN_MvU/Tm2wga2X4hI/AAAAAAAABBs/dUuDS1gj9mM/s800/DisablePrefixMatchSelection.png

概要

JListにフォーカスがある状態で英数字キー入力をしたときに先頭文字が一致するアイテムを検索して選択する機能を無効にします。

サンプルコード

JList list = new JList() {
  @Override public int getNextMatch(
        String prefix, int startIndex, Position.Bias bias) {
    return -1;
  }
};
View in GitHub: Java, Kotlin

解説

上記のサンプルでは、JList#getNextMatch(...)メソッドをオーバーライドし、戻り値(次にマッチする要素のインデックス)が常に-1になるようにすることで、キー入力による先頭文字検索選択を無効にしています。


JTreeにもJTree#getNextMatch(...)メソッドが存在し、同様のキー入力による選択機能がありますが、こちらはインデックスではなく、TreePathが戻り値なので、nullを返すことで無効にすることができます。

JTree tree = new JTree() {
  @Override public TreePath getNextMatch(
        String prefix, int startingRow, Position.Bias bias) {
    return null;
  }
};

参考リンク

コメント