学生向けにプログラミングを解説。次>>リストと似た機能を持つものに「コンボボックス(JComboBox)」があります。コンボボックスは編集可能なアイテム(初期設定ではテキストフィールド)を持つドロップダウンリストです。リストと違い、複数の項目からの選択は出来ません。コンボボックスはjavax.swing.JComboBoxを用います。JComboBoxは項目の追加や削除が可能です。+--javax.swing.JComboBoxコンボボックスはjavax.swing.ComboBoxModelインターフェイスを実装するクラスのモデルを利用します。ComboBoxModelのスーパーインターフェースはListModelです。今回はこのインターフェイスを実装したjavax.swing.DefaultListModelを利用します。リスト同様、javax.swing.AbstractListModelをスーパーインターフェースとしています。コンボボックスのリスト項目描画の変更は、自作する場合javax.swing.ListCellRendererインターフェースを実装したクラスを作成します。初期設定では、javax.swing.plaf.basic.BasicComboBoxRendererが利用されます。単純なコンボボックスの生成もリストと同様に作成できます。生成例のひとつとして文字列をコンボボックスのリスト項目として、JComboBoxを生成しています。正確には「Object[]」を指定しています。この他にモデルなどでも生成できます。文字列「1」〜「10」という内容の項目を持つコンボボックスを生成します。このときそれぞれの内容のインデックスは「0」から始まります。インデックスは「0」〜「9」となります。コンボボックスの項目を編集可能にするには、setEditable(true)とすれば良いですが、実行してみると、デフォルトのエディタでは、編集の結果がリストに反映されないことに気付くはずです。「item1」という項目を選択して、「test」と修正しても、再度リスト表示させると、「item1」と元に戻ります。このようにならないようにエディタをカスタマイズしたければ、javax.swing.ComboBoxEditorインターフェースを実装したクラスを作成してください。初期設定のテキストエディタはjavax.swing.plaf.BasicComboBoxEditorです。実装するインターフェースはjavax.swing.ComboBoxEditorです。選択されたリスト項目の取得は、「インデックス」あるいは「内容」のいずれでも使えます。getSelectedIndex()メソッドでインデックスを取得、getSelectedItem()メソッドで内容を取得します。comboはJComboBoxで生成されたインスタンスとします。obj);コンボボックスのイベントの1つは選択によるイベントです。選択のイベントには「選択した」と「選択解除」の2種類があります。イベントはjavax.awt.ItemListenerに通知され、処理はitemStateChanged(itemEvent)に記述します。選択/解除はイベントのgetStateChange()メソッドで判定できます。「itemEvent.SELECTED」で選択、「ItemEvent.DESELECTED」で選択解除を表します。:コンボボックスでは編集によってもイベントが発生します。エンターキーが押された場合にjava.awt.ActionListenerに通知されます。処理はactionPerfprmed(ActionEvent)に記述します。このとき、項目内容の見た目が変化するので、ItemEventも発生します。:追加は以下のメソッドを利用できます。指定オブジェクトを指定位置へ削除は以下のメソッドを利用できます。以下のサンプルプログラムを作成してみましょう。}}サンプルを実行してみましょう。コンボボックスが表示されます。以下のサンプルプログラムを作成してみましょう。}}サンプルプログラムを実行してみましょう。コンボボックスが表示されます。項目の編集が出来ます。以下のサンプルプログラムを作成してみましょう。}}では、サンプルプログラムを実行してみましょう。コンボボックスが表示されます。項目の編集が出来ます。項目の追加・削除が出来ます。コマンドプロンプト上にも結果が表示されます。まとめはてなブログをはじめよう!MrRadiologyさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。