コンボボックスで指定の項目を選択する

広告

コンボボックスでは登録されたデータの先頭の項目がデフォルトで選択されています。ここでは任意の項目を選択する方法を確認します。JComboBoxクラスで用意されている「setSelectedIndex」メソッドを使います。

public void setSelectedIndex(int anIndex)

インデックス anIndex にある項目を選択します。

パラメータ:
  anIndex - 選択するリスト項目を指定する整数値。 0 はリスト内の最初の項
    目を指定。
例外: 
  IllegalArgumentException - anIndex が -1 より小さい場合、あるいは
    anIndex がサイズに等しいかそれより大きい場合

引数には選択したい項目のインデックスを表すint型の値を指定します。インデックスは先頭の項目が「0」となります。

実際の使い方は次のようになります。

String[] combodata = {"Swing", "Java2D", "Java3D", "JavaMail"};
JComboBox combo = new JComboBox(combodata);
combo.setSelectedIndex(2);

またインデックスではなく登録されている項目のオブジェクトで指定するメソッドも用意されています。JComboBoxクラスで用意されている「setSelectedItem」メソッドを使います。

public void setSelectedItem(Object anObject)

コンボボックス表示領域の選択された項目を引数のオブジェクトに設定します。
anObject がリストにある場合、表示領域には選択された anObject を表示しま
す。

anObject がリストになく、コンボボックスが編集不可の場合、現在の選択は変
更されません。コンボボックスが編集可能な場合、選択は anObject に変更され
ます。 

これによって選択項目が変更される場合は、コンボボックスに追加される 
ItemListener に、1 つまたは 2 つの ItemEvent が通知されます。 現在選択さ
れている項目がある場合、ItemEvent がトリガーされ、状態が 
ItemEvent.DESELECTED に変更されます。anObject がリストにあり、現在選択さ
れていない場合は、ItemEvent がトリガーされ、状態は ItemEvent.SELECTED に
変更されます。

コンボボックスに追加された ActionListener は、このメソッドが呼び出される
時に ActionEvent で通知されます。 

パラメータ:
  anObject - 選択するリストオブジェクト。選択をクリアする場合は null を指定

引数には選択したい項目のオブジェクトを指定します。一致するオブジェクトがコンボボックス内にあれば、その項目が選択されます。

実際の使い方は次のようになります。

String[] combodata = {"Swing", "Java2D", "Java3D", "JavaMail"};
JComboBox combo = new JComboBox(combodata);
combo.setSelectedItem("Java3D");

サンプルプログラム

では簡単なサンプルを作成して試してみます。

JComboBoxTest6.java

import javax.swing.*;
import java.awt.Dimension;
import java.awt.BorderLayout;

public class JComboBoxTest6 extends JFrame{

  public static void main(String[] args){
    JComboBoxTest6 frame = new JComboBoxTest6();

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setBounds(10, 10, 300, 200);
    frame.setTitle("タイトル");
    frame.setVisible(true);
  }

  JComboBoxTest6(){
    String[] startTime = {"08:00","09:00","10:00","11:00",
                          "12:00","13:00","14:00","15:00",
                          "16:00","17:00","18:00","19:00"};

    String[] endTime = {"08:00","09:00","10:00","11:00",
                          "12:00","13:00","14:00","15:00",
                          "16:00","17:00","18:00","19:00"};

    JComboBox combo1 = new JComboBox(startTime);
    combo1.setPreferredSize(new Dimension(80, 30));
    combo1.setSelectedIndex(1);

    JComboBox combo2 = new JComboBox(endTime);
    combo2.setPreferredSize(new Dimension(80, 30));
    combo2.setSelectedItem("15:00");

    JPanel p = new JPanel();
    p.add(new JLabel("start:"));
    p.add(combo1);
    p.add(new JLabel("  end:"));
    p.add(combo2);

    getContentPane().add(p, BorderLayout.CENTER);
  }
}

上記をコンパイルした後で実行すると次のように表示されます。

JComboBoxで選択項目を設定する

左側のコンボボックスはインデックスで指定し、右側のコンボボックスはオブジェクトで指定して項目を選択しています。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。