2012-11-08 2 views
1

그 사이에 값을 전달하는 여러 개의 창이있는 프로그램을 작성하고 있습니다. 현재 1-99 개의 체크 박스로 구성된 프로그램의 일부를 테스트하고 있습니다. 그러나 단추를 클릭하여 상태를 확인하려고 할 때 작동하지 않습니다. 어디에 문제가 여기에있다 :CheckBox 매트릭스에 문제가 있습니다. 루프가 작동하지 않습니다.

public class asdf { 
    public static boolean matra[][] = new boolean[10][10]; 

    public static void main(String arg[]) { 

    for(int ii=0;ii<matra.length; ii++){ 
     for(int jj=0;jj<matra.length; jj++){ 
      matra[ii][jj]=false; 
      }   
    } 
    new JFrameDemo(); 
} 
} 

다른 클래스 :

public void actionPerformed(ActionEvent event) { 



    if(event.getSource() == okay) { 
     for(int i=0;i<box.length; i++){ 
      for(int j=0;j<box.length; j++){ 
       if((i==0)&&(j==0)) continue;      
       if(box[i][j].getState()) 
       asdf.matra[i][j]=true; 
       System.out.println(box[i][j].getLabel() + " is " + asdf.matra[i][j]); 
       }  
     } 

    } 


}  

여기에 메인 클래스의

import java.awt.*; 

import java.awt.event.WindowEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 
import java.awt.event.ItemListener; 
import java.awt.event.ItemEvent; 

public class JFrameDemo extends Frame implements ActionListener, ItemListener { 
    Checkbox box[][] = new Checkbox[10][10]; 
    Button okay; 



JFrameDemo() { 
    enableEvents(AWTEvent.WINDOW_EVENT_MASK); 
    add(makePanel()); 
    pack(); 
    show(); 

} 
private Panel makePanel() { 


    GridBagConstraints con = new GridBagConstraints(); 
    Panel panel = new Panel(); 
    GridBagLayout gridbag = new GridBagLayout(); 
    panel.setLayout(gridbag); 

    for(int i=0;i<box.length; i++){ 
     for(int j=0;j<box.length; j++){ 
      if((i==0)&&(j==0)) continue;      

      box[i][j] = new Checkbox(i+j*10+""); 
      con.gridx = i; 
      con.gridy = j; 
      panel.add(box[i][j],con); 
      }   
    } 

    okay = new Button("Unesi"); 
    con.gridx = 10; 
    con.gridy = 10; 
    panel.add(okay,con); 

    return(panel); 
} 
public void actionPerformed(ActionEvent event) { 

    if(event.getSource() == okay) { 
     for(int i=0;i<box.length; i++){ 
      for(int j=0;j<box.length; j++){ 
       if((i==0)&&(j==0)) continue;      
       if(box[i][j].getState()) 
       asdf.matra[i][j]=true; 
       System.out.println(box[i][j].getLabel() + " is " + asdf.matra[i][j]); 
       }  
     } 

    } 


} 
public void itemStateChanged(ItemEvent event) { 

} 
public void processWindowEvent(WindowEvent event) { 
    if(event.getID() == WindowEvent.WINDOW_CLOSING) 
     System.exit(0); 
} 
} 
이 프로그램은 오류없이 실행

하지만, 콘솔 ISN ' 어떤 결과가 나옵니다. 글로벌 변수에도 값을 전달해야합니다. 중첩 된 fors에 문제가 있다고 생각합니다.

+1

그리고 코드의 어느 부분에 문제가 있습니까? 물론 우리가 전체 코드를 건너 뛰는 것을 원하지는 않습니까? –

+0

사실, 그것은 내가 작성한 첫 번째 코드 세그먼트입니다. Fors는 작동하지 않는 것처럼 보입니다. Checkbox 배열로 시도해 보았습니다. checkbox 행렬을 시작합니다. 그러나 ok 버튼을 클릭하고 상태를 확인해야 할 때, fors를 사용하여 모두 통과합니다. 티. –

답변

1

버튼에 ActionListener를 추가하는 것을 잊어 버리는 것입니다.

okay = new Button("Unesi"); 
okay.addActionListener(this); 
+0

정말 고마워요! –

관련 문제