コンボボックス


リストからの単一項目選択

コンボボックスは、AWT におけるチョイスのようなコンポーネントです
コンボボックスは javax.swing.JComboBox で実装されています
java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--javax.swing.JComboBox

public class JComboBox extends JComponent
	implements ItemSelectable , ListDataListener ,
				ActionListener , Accessible
このクラスは、次のようなコンストラクタを公開しています

public JComboBox()
public JComboBox(Vector items)
public JComboBox(Object[] items)
public JComboBox(ComboBoxModel aModel)

items には追加する項目を表す配列、または Vector を指定します
aModel は必要な情報を保有するコンボボックスモデルを指定します

javax.swing.ComboBoxModel インターフェイスは
コンボボックスの選択項目を設定、及び取得するメソッドを宣言しています

public interface ComboBoxModel extends ListModel

ListModel を継承していることに注意してください
選択項目の設定は ComboBoxModel.setSelectedItem() メソッドで
取得は ComboBoxModel.getSelectedItem() メソッドで行います

public void setSelectedItem(Object anItem)
public Object getSelectedItem()

anItem には、選択項目を指定します
この項目は、必ずしもリストのセルとは限りません
import java.awt.*;
import javax.swing.*;

public class Test extends JApplet {
	public void init() {
		String item[] = new String[10];
		for(int i = 0 ; i < item.length ; i++) item[i] = "Kitty " + i;
		JComboBox combo = new JComboBox(item);

		getContentPane().add(combo , BorderLayout.NORTH);
	}
}


このプログラムは、文字列配列をコンボボックスの項目として
コンストラクタに指定し、コンボボックスを構築してアプレットに追加しています

インスタンス生成後に項目を追加するには JComboBox.addItem() メソッドを
項目を削除するには JComboBox.removeItem() メソッドか
JComboBox.removeItemAt() メソッドを用います
JComboBox.removeAllItems() を呼び出せば、全ての項目を解除します

public void addItem(Object anObject)
public void removeItem(Object anObject)
public void removeItemAt(int anIndex)
public void removeAllItems()

anObject には追加、または削除する項目のオブジェクトを指定します
anIndex は、削除する項目のインデックスを指定します

選択されている項目は JComboBox.getSelectedItem() で取得できます
インデックスは JComboBox.getSelectedIndex() で得ることができます
それぞれ、選択するための set_() メソッドと対になっています

public void setSelectedItem(Object anObject)
public void setSelectedIndex(int anIndex)
public Object getSelectedItem()
public int getSelectedIndex()

anObject には選択する項目を、anIndex は選択する項目のインデックスを指定します
コンボボックスは、常に単一選択なので、リストのような複数選択はありません

選択が行われると、コンボボックスはアクションリスナを呼び出します
リスナは JComboBox.addActionListener() メソッドで登録することができます
リスナを解除するには JComboBox.removeActionListener() を使います

public void addActionListener(ActionListener l)
public void removeActionListener(ActionListener l)

l にはアクションリスナを指定します
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Test extends JApplet implements ActionListener {
	JComboBox combo = new JComboBox();

	public void init() {
		Color color[] = {
			Color.RED , Color.BLUE , Color.BLACK , Color.WHITE ,
			Color.GREEN , Color.GRAY , Color.YELLOW
		};
		for(int i = 0 ; i < color.length ; i++) combo.addItem(color[i]);
		combo.addActionListener(this);

		getContentPane().add(combo , BorderLayout.NORTH);
	}
	public void actionPerformed(ActionEvent e) {
		getContentPane().setBackground((Color)combo.getSelectedItem());
	}
}


このプログラムは、コンボボックスが複数の Color 配列を項目として表示し
色を選択すると、アプレットの背景色がその色に変更されます



前のページへ戻る次のページへ