2017-11-30 9 views
0

사용자가 원하는 각 피자의 특성을 선택할 수있는 사용자 인터페이스를 만들고 싶습니다. 그리고 나는 상기 사용자가 입력 한 값을 사용하기 위해 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는 '빵 껍질', '크기'또는 '음료'를 선택하기 위해 만들어집니다. (세 개 모두 열거 형입니다)

그리고이 인터페이스는 "박스"수평 및 수직의 도움으로 구성됩니다. 메인 패널 "panelComm2"에 넣은 것을 사용하여 마지막에 JoptionPane을 만듭니다.

이 모양은 다음과 같습니다

User interface

을하지만 내 인터페이스를 내장 한 방법을, 나는 사용자가 선택한 정보를 얻을 수 없습니다.

사용자가 '확인'을 클릭 할 때 사용할 수 있도록 인터페이스의 각 필드에 변수를 추가하는 방법을 찾고 있습니다.

+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'루프 새로운까지 설정

MadProgram 덕분에

관련 문제