2014-09-03 6 views
0

각 집합 (처리 2+)에 5 개의 단추가있는 4 개 이상의 라디오 단추 집합 중에서 선택하도록 사용자에게 쿼리를 시도하고 있습니다. 문제가 발생하는 곳은 각 버튼 집합에서 선택하여 배열을 가져 와서 요소를 쿼리 할 수있는 행렬의 열을 채우고 2D 배열을 인쇄하고 궁극적으로 CSV 또는 탭 txt 파일로 작성하는 것입니다.controlP5 : 여러 RadioButton 결과에 대한 행렬/2D 배열

import controlP5.*; 
ControlP5 controlP5; 

RadioButton c0; 
RadioButton c1; 
RadioButton c2; 
RadioButton c3; 

int cols = 5; 
int rows = 4; 
int[][] myArray = new int[cols][rows]; 

void setup() { 
    size(600,650); 
controlP5 = new ControlP5(this); 
    c0 = controlP5.addRadioButton("ch0",60,60) 
       .setSize(20,20) 
       .setItemsPerRow(5) 
       .setSpacingColumn(50)    
       .addItem("c03", 1) 
       .addItem("c04", 2) 
       .addItem("c05", 3) 
       .addItem("c0AM", 4) 
       .addItem("c0AF", 5) 
       ; 
    c1 = controlP5.addRadioButton("ch1",60,80) 
       .setSize(20,20) 
       .setItemsPerRow(5) 
       .setSpacingColumn(50) 
       .addItem("c13", 1) 
       .addItem("c14", 2) 
       .addItem("c15", 3) 
       .addItem("c1AM", 4) 
       .addItem("c1AF", 5) 
       ; 
    c2 = controlP5.addRadioButton("ch2",60,100) 
       .setSize(20,20) 
       .setItemsPerRow(5) 
       .setSpacingColumn(50) 
       .addItem("c23", 1) 
       .addItem("c24", 2) 
       .addItem("c25", 3) 
       .addItem("c2AM", 4) 
       .addItem("c2AF", 5) 

       ; 
    c3 = controlP5.addRadioButton("ch3",60,120) 
       .setSize(20,20) 
       .setItemsPerRow(5) 
       .setSpacingColumn(50)   
       .addItem("c33", 1) 
       .addItem("c34", 2) 
       .addItem("c35", 3) 
       .addItem("c3AM", 4) 
       .addItem("c3AF", 5) 

       ; 
} 

void draw() { 
background(0); 
} 

void controlEvent(ControlEvent theEvent) { 
    if(theEvent.isGroup() && theEvent.name().equals("ch0") || theEvent.name().equals("ch0") ||  theEvent.name().equals("ch2") || theEvent.name().equals("ch3")){ 
    println(theEvent.name()); 
    println(theEvent.arrayValue()); 
    //float t=float(theEvent.arrayValue()); 
    //int[][] = { {float getGroup(),float[] getArrayValue()}, {3,2,1,0}, {3,5,6,1}, {3,8,3,4} }; 
//int cols = 4; 
//int rows = 5; 
//int[][] myArray = new int[cols][rows]; 

// Two nested loops allow us to visit every spot in a 2D array. 
// For every column I, visit every row J. 
//for (int i = 0; i < cols; i++) { 
// for (int j = 0; j < rows; j++) { 
//myArray[i][j] = float(theEvent.arrayValue); 
    } 
} 

답변

1

서로 다른 것을 혼합했습니다. 또한 전체 어레이를 점검하고이 정보를 저장할 필요가 없습니다. 그냥 클릭 버튼을 업데이 트하십시오.

c3 = controlP5.addRadioButton("ch3", 60, 120) 
    .setId(3) 
    .setSize(20, 20) 
    ... 

난 당신이 사용 방법을 정확히 모르는 : 다음은이 같은 모든 라디오 버튼에 ID 매개 변수를 추가 할 필요가 간단한 스위치 작업을 수행하려면 당신의 controlEvent

void controlEvent(ControlEvent theEvent) { 

    int cols = 4; 
    int rows = 5; 
    int[][] myArray = new int[cols][rows];  

    switch(theEvent.getId()){ 
    case 0: 
     myArray[0][(int)theEvent.value()-1] = 1; 
     break; 
    case 1: 
     myArray[1][(int)theEvent.value()-1] = 1; 
     break; 
    case 2: 
     myArray[2][(int)theEvent.value()-1] = 1; 
     break; 
    case 3: 
     myArray[3][(int)theEvent.value()-1] = 1; 
     break; 
    } 
    println("==== " + theEvent.getId() + " ==="); 
    println(myArray[theEvent.getId()]); 
} 

의 새로운 버전입니다 이 배열 그래서 내 구현 로컬 변수로 사용되므로이 이벤트가 호출 될 때마다 삭제됩니다 있지만이 전역 변수로 배열을 선언 한 다음 업데이트 된 열만 삭제하여 피할 수 있습니다.