Swing/LoopComboBox のバックアップ(No.18)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/LoopComboBox へ行く。
- 1 (2005-11-13 (日) 11:00:49)
- 2 (2005-11-13 (日) 19:03:50)
- 3 (2006-02-27 (月) 16:10:45)
- 4 (2006-05-26 (金) 14:14:16)
- 5 (2007-07-19 (木) 10:53:57)
- 6 (2013-03-22 (金) 11:46:50)
- 7 (2013-10-10 (木) 11:42:42)
- 8 (2015-03-13 (金) 13:07:06)
- 9 (2016-09-21 (水) 01:21:18)
- 10 (2017-10-28 (土) 18:50:28)
- 11 (2017-10-30 (月) 18:42:51)
- 12 (2019-04-19 (金) 14:14:08)
- 13 (2021-01-30 (土) 00:52:19)
- 14 (2023-12-24 (日) 15:31:02)
- 15 (2024-05-03 (金) 22:47:24)
- 16 (2025-01-03 (金) 08:57:02)
- 17 (2025-01-03 (金) 09:01:23)
- 18 (2025-01-03 (金) 09:02:38)
- 19 (2025-01-03 (金) 09:03:21)
- 20 (2025-01-03 (金) 09:04:02)
- category: swing
folder: LoopComboBox
title: JComboBoxのItem選択をループ
tags: [JComboBox, ActionMap, InputMap]
author: aterai
pubdate: 2005-10-24T09:40:47+09:00
description: JComboBoxのItemの選択が、上下のカーソルキーでループするように設定します。
image:
Summary
JComboBox
のItem
の選択が、上下のカーソルキーでループするように設定します。
Screenshot

Advertisement
Source Code Examples
Action up = new AbstractAction() {
@Override public void actionPerformed(ActionEvent e) {
JComboBox<?> c = (JComboBox<?>) e.getSource();
int i = c.getSelectedIndex();
int size = c.getItemCount();
c.setSelectedIndex((i - 1 + size) % size);
}
};
Action down = new AbstractAction() {
@Override public void actionPerformed(ActionEvent e) {
JComboBox<?> c = (JComboBox<?>) e.getSource();
int i = c.getSelectedIndex();
int size = c.getItemCount();
c.setSelectedIndex((i + 1) % size);
}
};
ActionMap am = combo.getActionMap();
am.put("loopUp", up);
am.put("loopDown", down);
InputMap im = combo.getInputMap();
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0), "loopUp");
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0), "loopDown");
View in GitHub: Java, Kotlin解説
default
- 例えば最後のアイテムが選択されている状態で下カーソルキーを入力しても選択状態は変化しない
loop
loopUp
: 先頭のアイテムが選択されている状態で上カーソルキーを入力すると末尾のアイテムを選択するAction
を作成loopDown
: 末尾のアイテムが選択されている状態で下カーソルキーを入力すると先頭のアイテムを選択するAction
を作成JComboBox
からActionMap
とInputMap
を取得しこれに上下カーソルキーに対応する新しいAction
を追加して選択のループを可能に設定