Swing/ShowPopupOnNavigation のバックアップ差分(No.1)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/ShowPopupOnNavigation へ行く。
- 1 (2021-04-05 (月) 00:07:03)
- 2 (2021-04-05 (月) 14:33:08)
- 追加された行はこの色です。
- 削除された行はこの色です。
--- category: swing folder: ShowPopupOnNavigation title: JComboBoxのドロップダウンリストを上矢印キーでも開くよう設定する tags: [JComboBox, LookAndFeel, InputMap] author: aterai pubdate: 2021-04-05T00:02:26+09:00 description: JComboBoxにフォーカスがある場合下矢印キーだけではなく上矢印キーでものドロップダウンリストを開くよう設定します。 image: https://drive.google.com/uc?id=1BL5XXUe_94Ivcqyzfx8mJbhRgpboDdpz --- * 概要 [#summary] JComboBoxにフォーカスがある場合下矢印キーだけではなく上矢印キーでものドロップダウンリストを開くよう設定します。 #download(https://drive.google.com/uc?id=1BL5XXUe_94Ivcqyzfx8mJbhRgpboDdpz) * サンプルコード [#sourcecode] #code(link){{ private static final String SHOW_POPUP_NAVI = "ComboBox.showPopupOnNavigation"; JLabel help = new JLabel("This setting only responds to the upwards arrow key↑"); help.setAlignmentX(0f); JCheckBox check = new JCheckBox(SHOW_POPUP_NAVI); check.setFocusable(false); check.addActionListener(e -> UIManager.put(SHOW_POPUP_NAVI, check.isSelected())); JComboBox<String> combo = new JComboBox<String>(makeModel()) { @Override public void updateUI() { super.updateUI(); boolean flg = UIManager.getLookAndFeelDefaults().getBoolean(SHOW_POPUP_NAVI); UIManager.put(SHOW_POPUP_NAVI, flg); check.setSelected(flg); } }; combo.setSelectedIndex(5); combo.setAlignmentX(0f); }} * 解説 [#explanation] - `ComboBox.showPopupOnNavigation`: `false` -- デフォルト -- `JComboBox`にフォーカスが存在する状態で上矢印キーKBD{↑}を入力してもドロップダウンリストは開かない -- 下矢印キーKBD{↓}を入力すれば`ComboBox.showPopupOnNavigation`に無関係にドロップダウンリストが開く - `ComboBox.showPopupOnNavigation`: `true` -- `JComboBox`にフォーカスが存在する状態で上矢印キーKBD{↑}を入力すると下矢印キーKBD{↓}と同様にドロップダウンリストが開く ---- - `selectPrevious` -- `ComboBox.showPopupOnNavigation`の設定は`selectPrevious`アクション内でのみ使用されるため、`MetalLookAndFeel`や`MotifLookAndFeel`でのみ有効 - `selectPrevious2` -- `ComboBox.showPopupOnNavigation`の設定は`selectPrevious2`アクションでは参照されないため、`WindowsLookAndFeel`や`NimbusLookAndFeel`では無効 -- `selectPrevious2`アクションでは`JComboBox`が編集不可の場合は上矢印キーでドロップダウンリストは開かず選択アイテムが移動する --- 編集不可の`JComboBox`でドロップダウンリストをキー入力で開く場合は、KBD{Alt+↑}キーなどを使用する -- `selectPrevious2`アクションでは`JComboBox`が編集可能の場合は上矢印キーでドロップダウンリストが開き選択アイテムは移動しない --- ドロップダウンリストが開いた状態で上矢印キーを入力すると選択アイテムが移動する - `selectNext2` -- `selectNext2`アクションでは`JComboBox`が編集不可の場合は下矢印キーでドロップダウンリストは開かず選択アイテムが移動する --- 編集不可の`JComboBox`でドロップダウンリストをキー入力で開く場合は、KBD{Alt+↓}キーなどを使用する -- `selectNext2`アクションでは`JComboBox`が編集可能、または`JTable`のセルエディタになっている場合は下矢印キーでドロップダウンリストが開く * 参考リンク [#reference] * コメント [#comment] #comment #comment