データモデルからJComboBoxオブジェクトを作成する

広告

作成したデータモデルからコンボボックスを作成する方法を確認します。コンストラクタを使う方法とJComboBoxクラスのオブジェクトを作成した後でメソッドを使って設定する方法があります。

まずコンストラクタで指定する方法を確認します。次のコンストラクタを使います。

public JComboBox(ComboBoxModel aModel)

項目を既存の ComboBoxModel から取得する JComboBox を生成します。
ComboBoxModel が提供されるため、このコンストラクタを使用して生成された
コンボボックスは、デフォルトのコンボボックスモデルを生成せず、挿入、削
除、および追加の各メソッドの動作方法に強い影響を与えます。 

パラメータ:
  aModel - 表示された項目のリストを提供する ComboBoxModel

引数にComboBoxModelインタフェースを実装したクラスのオブジェクトを指定します。

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

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

メソッドを使って設定する

JComboBoxクラスのオブジェクトが作成された後で、データモデルを設定する方法を確認します。JComboBoxクラスで用意されている「setModel」メソッドを使います。

public void setModel(ComboBoxModel aModel)

JComboBox が項目のリストを取得するために使用するデータモデルを設定します。

パラメータ:
  aModel - 表示された項目のリストを提供する ComboBoxModel

引数にComboBoxModelインタフェースを実装したクラスのオブジェクトを指定します。

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

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

JComboBox combo = new JComboBox();
combo.setModel(combo);

サンプルプログラム

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

JComboBoxTest9.java

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

public class JComboBoxTest9 extends JFrame{

  JComboBox startCombo;
  JComboBox endCombo;

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

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

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

    DefaultComboBoxModel startModel = new DefaultComboBoxModel(startTime);
    JComboBox startCombo = new JComboBox(startModel);

    startCombo.setPreferredSize(new Dimension(80, 30));

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

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

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

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

JComboBoxでデータモデルを使ってコンボボックスを作成する

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。