# ダイナミックなドロップダウンリストを作成

最初のシナリオでは、tJavaコンポーネント内のリストをハードコードしました。しかし、リストの項目はデータソースからのものである場合があります。たとえば、項目はデータベーステーブルに保管されており、その数が不明であることがあります。

このジョブは、次のコンポーネントを使用します:

* employeeテーブルから人物情報をクエリーするtMysqlInputコンポーネント、
* コンテキスト変数で、ダイナミックなドロップダウンリストを準備して、ランタイムにユーザーから選択された値を保管するtJavaFlex、
* tJavaFlexによって処理された情報を生成する2つ目のtMysqlInputコンポーネント、
* コンソールに結果を出力するtLogRowコンポーネント。

![](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/creating_a_dynamic_drop_down_list1.png)

## 手順

1. [Palette] (パレット)から、tMysqlInputコンポーネントとtJavaFlexコンポーネントをデザインワークスペースにドロップします。[行] &gt; [メイン]リンクを使用してコンポーネントを接続します。
2. [Palette] (パレット)から、2番目のtMysqlInputコンポーネントとtLogRowコンポーネントをデザインワークスペースにドロップします。[行] &gt; [メイン]リンクを使用してコンポーネントを接続します。 [Trigger] (トリガー) &gt; [On Subjob ok] (サブジョブがOKの場合)接続を使って、最初のサブジョブを2番目のサブジョブにリンクします。
3. [Context] (コンテキスト)ビューをクリックし、String型のコンテキスト変数を定義して、namedと名付けます:
4. 1つ目のtMysqlをダブルクリックして、以下の例のように設定します:
   1. 以下のクエリーをクエリーボックスに追加します:
      ```
      "select name from employee"
      ```
   2. スキーマを編集して、このスキーマを設定するために使われます。

      ![](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/creating_a_dynamic_drop_down_list2.png)
5. tJavaFlexコンポーネントをクリックして、その[Basic settings] (基本設定)ビューを開いて、次のコードを追加します:
   1. [Start code] (開始コード)ボックスに:
      ```
      java.util.ArrayList<String> list=new
                                          java.util.ArrayList<String> ();
      ```
   2. [Main code] (メインコード)ボックスに:
      ```
      list.add(row1.name);
      ```
   3. [End code] (終了コード)ボックスに:
      ```
      String [] nameList=new String[list.size()];
                                      nameList=list.toArray(nameList);
                                      JFrame frame = new JFrame("Input Dialog Example");
                                      String returnValue = (String) JOptionPane.showInputDialog(frame,
                                      "Select the name you want to query?","Employee Information",JOptionPane.QUESTION_MESSAGE,null,nameList,nameList[0]);
                                      context.name=returnValue;
      ```
6. tJavaコンポーネントの[Advanced Settings] (詳細設定)パネルに、このジョブで使用されるクラスの完全パスをインポートします。

   ![](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/creating_a_drop_down_list2.png)
7. 上のシナリオのように、2つ目のtMysqlInputコンポーネントを設定し、employeeテーブルから人物情報をクエリーし、tLogRowを使って結果をコンソールに出力します。
8. ジョブを実行します。以下のように、テーブル内の名前はすべてリストの項目です:

   ![](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/creating_a_dynamic_drop_down_list3.png)
9. たとえば、リストからNicolasを選択します。Nicolasに関する情報がテーブルからクエリーされて、コンソールに出力されます。

   ![](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/creating_a_dynamic_drop_down_list4.png)