2017-11-30 5 views
0

ユーザーが希望する各ピザのカーナリズムを選択できるユーザーインターフェイスを作成したいと考えています。 そして私は上記のユーザーによってenterという値を使用するためにablになりたいと思います。スイングで複数のフィールドを作成してforループの値を使用する方法

(ユーザーによって前に定義)

   JPanel panelComm2 = new JPanel(); 
       String[] crust = Crust.names(); 
       String[] size = Size.names(); 
       String[] drink = Drink.names(); 


       Box verticalBox = Box.createVerticalBox(); 
       for(int i=0;i<nbPizza;i++){ 
        Box horizontalBox = Box.createHorizontalBox(); 
        JLabel crustJLabel = new JLabel("Crust Pizza "+ (i+1)+": "); 
        horizontalBox.add(crustJLabel); 
        JComboBox comboCrust = new JComboBox(crust); 
        horizontalBox.add(comboCrust); 

        JLabel sizeJLabel = new JLabel("Size Pizza "+ (i+1)+": "); 
        horizontalBox.add(sizeJLabel); 
        JComboBox comboSize = new JComboBox(size); 
        horizontalBox.add(comboSize); 
        verticalBox.add(horizontalBox); 
       } 
       for (int j=0;j<nbDrink;j++){ 
        Box horizontalBox = Box.createHorizontalBox(); 
        JLabel drinkJLabel = new JLabel("Drink "+ (j+1) +": "); 
        horizontalBox.add(drinkJLabel); 
        JComboBox comboChooseDrink = new JComboBox(drink); 
        horizontalBox.add(comboChooseDrink); 
        verticalBox.add(horizontalBox); 
       } 

       panelComm2.add(verticalBox); 

       int p = JOptionPane.showOptionDialog(null, panelComm2, "Select option", 
         JOptionPane.YES_NO_OPTION, 
         JOptionPane.QUESTION_MESSAGE, 
         null, options2, options2[0]); 
       if (p == JOptionPane.YES_OPTION) { 
        // Here I want to store the value enter by the user in the comboBox 
        // Without a for, I would do this 
        // 
        // String crust1 = comboCrust().getSelectedItem().toString(); 
        // 
        //But comboCrust don't exist anymore cause it exist only in the for 
        System.out.println("To do"); 
       } 

あなたは、私がループのためのいくつかの中の私のインターフェースを生成見ることができますが、それらのループの大きさは、いくつかの変数に依存されていますので、ここで

は私のコードです「クラスト」、「サイズ」、「ドリンク」のいずれかを選択するためのJComboBoxが作成されます。 (3つはすべて列挙型です)

そして、インターフェイスは、 "ボックス"の助けを借りて構成されています。私がメインパネル「panelComm2」に入れたものは、最後にJoptionPaneを作るのにも使われます。

は、ここでは次のようになります。

User interface

をしかし、私は私のインターフェイスを構築した方法で、私は、ユーザーが選択した情報を取得することはできません。

私は、ユーザーが「OK」をクリックしたときに使用できるように、インターフェースの各フィールドに変数を追加する方法を探しています。

+1

後で検査したいフィールドへの参照を維持する必要があります。 1つの解決方法は、すべてを配列に入れることです。もう一つは、情報の各行の基本的なプロパティを含んだカスタム 'JPanel'を作成することです。選択されたプロパティについて質問したり、他の決定を下したりすることで、インスタンスを配列に配置できます。 – MadProgrammer

+0

私はかなり理解しましたJpanelのアイデア。しかし、配列のものは本当にうまく動作します。 私は自分の考えを変数にすることに焦点を当てていました – kaless

+0

基本的な考え方は、必要な機能を再利用可能な単一のコンポーネントに「カプセル化」することです。 – MadProgrammer

答えて

0

私は、各フィールドの変数を作成し、JcomboBoxの配列を使用する前に 'for'ループを定義するという考えをあきらめます。

JComboBox[] arrayComboCrust = new JComboBox[nbPizza]; 
JComboBox[] arrayComboSize = new JComboBox[nbPizza]; 
JComboBox[] arrayComboDrink = new JComboBox[nbDrink]; 

そして、ループの中で、私は、配列の値を定義します。

arrayComboCrust[i]=comboCrust; 

をそして私は、私は

を望んでいた値を読み出すために、私のJOptionPaneでのforループの新しいを設定

MadProgrammerに感謝

関連する問題