• category: swing folder: ComboBoxNoActionOnKeyNavigation title: JComboBoxのドロップダウンリストでカーソルキーナビゲーションを無効にする tags: [JComboBox] author: aterai pubdate: 2022-05-30T00:27:33+09:00 description: JComboBoxのドロップダウンリストでアイテム選択状態がカーソルキー入力で変化してもJComboBox本体のアイテム表示を変更しないよう設定します。 image: https://drive.google.com/uc?id=1dObku__RdVH8sTpYyBpbGRWFwumlZBmU

概要

JComboBoxのドロップダウンリストでアイテム選択状態がカーソルキー入力で変化してもJComboBox本体のアイテム表示を変更しないよう設定します。

サンプルコード

String key1 = "ComboBox.noActionOnKeyNavigation";
JCheckBox check1 = new JCheckBox(key1, UIManager.getBoolean(key1));
check1.addActionListener(e -> {
  JCheckBox c1 = (JCheckBox) e.getSource();
  UIManager.put(key1, c1.isSelected());
});

String key2 = "ComboBox.isEnterSelectablePopup";
JCheckBox check2 = new JCheckBox(key2, UIManager.getBoolean(key2));
check2.addActionListener(e -> {
  JCheckBox c2 = (JCheckBox) e.getSource();
  UIManager.put(key2, c2.isSelected());
});

JComboBox<String> combo1 = new JComboBox<>(makeModel());
combo1.setEditable(false);

JComboBox<String> combo2 = new JComboBox<>(makeModel());
combo2.setEditable(true);
View in GitHub: Java, Kotlin

解説

  • ComboBox.noActionOnKeyNavigation
    • false: デフォルト
      • JComboBoxのドロップダウンリストの選択状態がカーソルキー入力で変更されるとJComboBox本体のアイテム表示が変化する
    • true:
      • JComboBoxのドロップダウンリストの選択状態がカーソルキー入力で変更されてもJComboBox本体のアイテム表示は変化しない
      • カーソルキー入力によるスクロールは可能
      • 編集不可のJComboBoxのドロップダウンリストで先頭文字のキー入力によって選択状態が変更された場合はJComboBox本体のアイテム表示も変更される(ComboBox.noActionOnKeyNavigationに依存しない)
      • JComboBoxのドロップダウンリストでEnterキーが入力されたて選択状態が変更された場合はJComboBox本体のアイテム表示も変更される
  • ComboBox.isEnterSelectablePopup

参考リンク

コメント