リストとラベル

ファイルはzipフォルダに納められています。
解凍ソフト(Aladdin Expander等)を使って解凍して下さい。

リストの作成

リストは、JLIstクラスをインスタンス化して作成します。
リスト項目をStringクラスの配列に指定し、其れをコンストラクタの引数として与えます。
此処での選択項目は4種類で、以下の様に宣言します。

static final String[] shapItem = {"四角線画", "四角塗り潰し", "楕円線画", "楕円塗り潰し"};

リストは、「枠」「左白目」「右白目」「左黒目」「右黒目」のそれぞれについて選択出来る様にするので、5つのリストを配置します。

JList wakuList; //枠の形状
JList siromeLeftList; //白目 左
JList siromeRightList; //白目 右
JList kuromeLeftList; //黒目 左
JList kuromeRightList; //黒目 右

初期値として、枠は四角線画、白目は楕円線画、黒目は楕円塗り潰しを選択する様に設定する事にしましょう。

wakuList.setSelectedIndex(0);
sirome LeftList.setSelectedIndex(2);
sirome RightList.setSelectedIndex(2);
kurome LeftList.setSelectedIndex(3);
kurome RightList.setSelectedIndex(3);

此処で、setSelectedIndexメソッドに渡す実引数は、選択肢を規定した配列shapItemの各添字となります。
作成したリストはパネルに載せ、リスナをimplementsします。
リストのイベントを監視するリスナは「ListSelectionListener」で、イベントが発生した時に呼び出されるメソッドは「ValueChanged」、此のメソッドの引数として与えられるイベント情報のクラスは「ListSelectionEvent」です。

描画処理

選択された形状によって行うメソッドが異なるので、部品の1つを描くユーザ定義メソッド「paint1」を作成する事にしましょう。
引数として、描画を行うgraphicsクラスのオブジェクト「g」と、座標値(Rectangleクラス)及び形状の番号(shapItemの添字の値)を渡します。
形状番号は、各リストで現在選ばれている項目を「getSelectedIndex();」メソッドで調べます。

リストのイベントが発生したら

描画処理では、描画する度に各リストで現在選択されている形状を調べます。
其の為、リストが変化した時の処理は再描画要求のみで良い事になります。

ラベルの作成

ラベルは、文字列に表示する為の部品です。
此迄使っていたDrawStringメソッドは、画面に直接文字を書く物ですが、ラベルは別の紙に文字を描いて其れをパネル上に置いた様なイメージです。
ラベルを作成するには、「JLabel」をインスタンス化します。
此の時、ラベルに表示する文字列と、此の文字列をラベルの枠内のどの位置に表示するかを指定します。
表示位置は、下表の3種類です。

JLabelの表示位置

表示位置 指定
左揃え JLabel.LEFT
中央揃え JLabel.CENTER
右揃え JLabel.RIGHT

此を使って、以下の様にコンストラクタを呼び出し、インスタンス化します。

オブジェクト名 = new JLabel(表示文字列, 表示位置);

此処では、5つのリストのそれぞれにタイトルを付けるので、5つのラベルを配置します。

例: JLabel wakuLabel = new JLabel("枠", JLabel.CENTER);
myJPanelList.add(wakuLabel);

グリッドレイアウト

此の侭では、ラベルとリストのペアが上手く表示されません。
其処で、「NORTH」に配置されたパネルをグリッドレイアウトを適用して、2行5列の枠に分けます。
1行目にラベルを、2行目にリストを配置します。
パネルにグリッドレイアウトを適用するには、

パネル.setLayout(new GridLayout(行数, 列数, 列間の隙間, 行間の隙間));

を指定します。
此処では2行5列、列間は少し間を開けたい所ですが、行間は出来るだけ詰めたいので、

myJPanelList.setLayout(new GridLayout(2, 5, 10, 0));

としましょう。
此の枠の1つ1つに1つずつのGUI部品を割り当てます。

ソース ダウンロード
MedamaSwingShap.java Medama13.zip MedamaSwingShap.html
MedamaSwingShapB.java MedamaSwingShapB.html

戻る