リストと似た振る舞いをする部品としてコンボボックスがあり、違いはおそらく項目を折りたたんで表示するところぐらいでしょう
コンストラクター
コンストラクタ | 引数 | 説明 |
---|---|---|
JComboBox() | なし | JComboBoxを生成 (選択項目なし) |
JComboBox(Object [ ] listData) | オブジェクト配列 | 引数の配列要素を選択項目として登録したJComboBoxを生成 |
JComboBox( ComboBoxModel dataMode) | コンボボックス管理モデル | コンボボックス管理モデルを利用したJComboBoxを生成 |
メソッド
メソッド | 返却値 | 引数 | 説明 |
---|---|---|---|
setSelectedIndex(int index) | void | 項目番号 | 引数の番号の項目を選択する |
getSelectedIndex( ) | int | なし | 選択されている項目の項目番号を取得 |
setSelectedItem(Object values) | void | 項目値、状態 | 指定した項目を選択 |
getSelectedItem() | Object | なし | 選択された項目の値を取得 |
■DefaultComboBoxModel
JList 同様 JComboBox自身は項目の追加・削除ができないのでこの部品も管理クラスが用意されている
操作 | メソッド | 返却値 | 引数 | 説明 |
---|---|---|---|---|
追加 | addItem(Object values) | なし | 項目値 | 末尾に項目を追加 |
追加 | insertItemAt(Object values,int index) | なし | 項目値,項目番号 | 引数で指定した位置に項目を追加 |
削除 | removeItemAt(int index) | なし | 項目番号 | 引数の項目番号の項目を削除 |
削除 | removeItem(Object values) | なし | 項目値 | 項目値を削除 |
削除 | removeAllItems() | なし | なし | 項目をすべて削除 |
■イベント
コンボボックスは基本ActionListenerですが追加や削除を行うときだけItemListenerのイベントが発生します。
■部品や画面の操作性を向上させる部品
Webブラウザの標準機能でもあるタブページやスクロールバーはもちろんJavaでもありますが、イベントが発生しないため各部品の簡単な説明でけにします。
JScrollPaneクラス :テキストエディタやリストにスクロール機能を提供する
JSplitPaneクラス :分割用のしきい棒がついたレイアウトが実装できる(BorderLayoutクラスとほぼ使い方が一緒)
JTabbedPaneクラス:タブ切り替えのページレイアウトが実装できる
JSplitPaneクラスとJTabbedPaneクラスのフィールド値
水平方向に分割 | 垂直方向に分割 | 左 | 右 | 上 | 下 |
---|---|---|---|---|---|
HORIZONTAL_SPLIT | VERTICAL_SPLIT | LEFT | RIGHT | TOP | BOTTOM |
new JScrollPane(部品) :引数の部品にスクロールを実装した部品オブジェクトを生成
new JSplitPane(分割の向き) :引数で指定された分割方向(上の表参照)に分割するレイアウト生成
new JTabbedPane(表示場所) :引数で指定された表示位置(上の表参照)にタブが表示されるレイアウトを生成
JTabbedPaneのタブ生成用メソッド
add(レイアウトオブジェクト又は部品 , タブタイトル) :第1引数に表示内容、第2引数にタブのタイトル文字列を指定して逐次追加する
■サンプルプログラム
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
public class GuiComboBox extends JFrame implements ActionListener{
private JList list;
private JComboBox box;
private final String [] item_sort = {"整列","降順"};
private final String [] item = {"日本","イギリス","ロシア","アメリカ","フランス","ドイツ","カナダ","ブラジル"};
public static void main(String [] arges) { new GuiComboBox();}
public GuiComboBox(){
setTitle("JavaでGUIその5");
setSize(400,200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new BorderLayout());
JSplitPane split = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
JTabbedPane tab = new JTabbedPane();
JButton act = new JButton("実行");
act.addActionListener(this);
box = new JComboBox(item_sort);
list = new JList(item);
JScrollPane scroll = new JScrollPane(list);
JPanel pane = new JPanel();
pane.add(box);
pane.add(act);
pane.add(new JLabel("ソートにタイムラグがあります"));
split.add(pane,JSplitPane.LEFT);
split.add(scroll,JSplitPane.RIGHT);
tab.add("メイン",split);
tab.add("おまけ",(new JPanel()).add(new JLabel("この画面は何もしません")));
add(tab,BorderLayout.CENTER);
setVisible(true);
}
public void actionPerformed(ActionEvent e){
int index = box.getSelectedIndex();
if(index == 0){
Arrays.sort(item);
} else if(index == 1){
Arrays.sort(item, Collections.reverseOrder());
}
}
}
メインタブの初期画面 おまけタブの画面
コンボボックスから整列を選んで実行ボタンを押すとしたのリストが昇順される。
降順を選んで実行ボタンを押しと元に戻る