• title: JComboBoxのItem選択をループ tags: [JComboBox, ActionMap, InputMap] author: aterai pubdate: 2005-10-24 description: JComboBoxのItemの選択が、上下のカーソルキーでループするように設定します。

概要

JComboBoxItemの選択が、上下のカーソルキーでループするように設定します。

サンプルコード

Action up = new AbstractAction() {
  @Override public void actionPerformed(ActionEvent e) {
    int index = combo.getSelectedIndex();
    combo.setSelectedIndex((index==0)?combo.getItemCount()-1:index-1);
  }
};
Action down = new AbstractAction() {
  @Override public void actionPerformed(ActionEvent e) {
    int index = combo.getSelectedIndex();
    combo.setSelectedIndex((index==combo.getItemCount()-1)?0:index+1);
  }
};
ActionMap amc = combo.getActionMap();
amc.put("myUp",   up);
amc.put("myDown", down);
InputMap imc = combo.getInputMap();
imc.put(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0),   "myUp");
imc.put(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0), "myDown");
View in GitHub: Java, Kotlin

解説

上記のサンプルでは、下のコンボボックスのActionMapInputMapを使って、上下キーに対応する新しいアクションを設定しています。

コメント