選択されている項目を取得する

広告

コンボボックスで現在選択されている項目(通常時に表示されている項目)を取得する方法を確認します。JComboBoxクラスで用意されている「getSelectedItem」メソッドを使います。

現在選択されている項目を返します。  

コンボボックスが編集可能な場合、この値は addItem、insertItemAt、または
データコンストラクタではコンボボックスに追加されません。

戻り値:
  現在選択されているオブジェクト

戻り値として現在選択されている項目のオブジェクトを取得できます。

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

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

String data = (String)combo.getSelectedItem();

選択されている項目のインデックスを取得する

現在選択されている項目のインデックス番号を取得する事も出来ます。JComboBoxクラスで用意されている「getSelectedIndex」メソッドを使います。

指定された項目に一致する、リスト内の最初の項目を返します。JComboBox がリ
ストにない項目の選択を許可する場合、その結果が常に定義されるとは限りませ
ん。項目が選択されていない場合、またはユーザーがリストにない項目を指定し
た場合は、-1 が返されます。

戻り値:
  現在選択されているリスト項目を指定する整数値。0 はリスト内の最初の項目
  を示す。項目が選択されていない場合、または現在選択されている項目がリス
  トにない場合は -1 を返す

戻り値として現在選択されている項目のインデックスをint型の値で取得します。インデックスは先頭の項目が「0」となります。

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

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

int index = combo.getSelectedIndex();

サンプルプログラム

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

JComboBoxTest7.java

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

public class JComboBoxTest7 extends JFrame implements ActionListener{

  JComboBox startCombo;
  JComboBox endCombo;
  JLabel label;

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

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

  JComboBoxTest7(){
    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"};

    startCombo = new JComboBox(startTime);
    startCombo.setPreferredSize(new Dimension(80, 30));

    startCombo.addActionListener(this);

    endCombo = new JComboBox(endTime);
    endCombo.setPreferredSize(new Dimension(80, 30));

    endCombo.addActionListener(this);

    JPanel p = new JPanel();
    p.add(new JLabel("start:"));
    p.add(startCombo);
    p.add(new JLabel("  end:"));
    p.add(endCombo);

    label = new JLabel();
    JPanel labelPanel = new JPanel();
    labelPanel.add(label);

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

  public void actionPerformed(ActionEvent e) {
    String start;
    String end;

    if (startCombo.getSelectedIndex() == -1){
        start = "(not select)";
    }else{
        start = (String)startCombo.getSelectedItem();
    }

    if (endCombo.getSelectedIndex() == -1){
        end = "(not select)";
    }else{
        end = (String)endCombo.getSelectedItem();
    }

    label.setText("START:" + start + ", END:" + end);
  }
}

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

JComboBoxで選択項目を取得する

どちらかのコンボボックスの値を選択しなおすと、画面下部のラベルに現在選択されている項目の値を取得して表示します。

JComboBoxで選択項目を取得する

JComboBoxで選択項目を取得する

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)