2013-06-11 5 views
0

그래서 자신에게 도전하고 간단한 워드 프로세서 응용 프로그램을 만드는 중입니다. 현재 키보드를 설치하고 있고 키에 문제가 있습니다. 알파벳 배열의 각 문자가있는 문자열 배열을 단추에 배치하고 싶습니다.배열의 요소를 JButton에 레이블로 배치

나는 순간이 있습니다

String FirstRow [] = {"q","w","e","r","t","y","u","i","o","p","a","s","d","f","g","h","j","k","l","z","x","c","v","b","n","m"}; 

    for(int i = 0; i < 40; i++) 
    { 
     if(i < 10) 
     { 
      JButton btn = new JButton(); 
      Nums.add(btn); 
      btn.setText("" + Num); 
      Num++; 
     } 
     else 
     {  
      JButton btn1 = new JButton(); 
      Nums.add(btn1); 
      btn1.setText("" + FirstRow[n]); 
      n++; 
     } 
    } 

는 첫 번째 행에 잘 배치 번호를 작동하는 경우 문장의 다른 부분없이. 그러나 글자를 써 넣으려고 할 때 경계 예외가 발생하고이를 해결하는 방법을 모르겠습니다.

답변

2

Yor 배열에는 26 개의 요소 만 포함되지만 루프는 최대 39 개가됩니다. for 루프가 숫자가 0이 될 때 (배열이 0 인 경우) ArrayIndexOutOfBoundsException이 발생합니다.

2

범위를 벗어나는 예외는 배열이 보유 할 수있는 것보다 큰 인덱스에 액세스하려고한다는 것을 의미합니다.

for (String[] row: keyCaps) { 
    for (String key: row) { 
     // create button. 
     // Add button to layout. 
    } 
    // Go to next row on screen. 
} 

당신은 다른를 선택할 수 있습니다, 다음

String[][] keyCaps = {{"`", "1", ..., "0", "-", "="}, 
         {"q", "w", ..., "p", "[", "]", "\\"}, 
         ..., 
         {"z", "x", ..., "m", ",", ".", "/"}}; 

그리고 : How does the Java 'for each' loop work?

또는 for(int i = 0; i < your_array.length; i++)

2

당신은 가상 키보드 2 차원 배열해야한다 시도 : 대신 foreach 문을 사용하십시오 물론 로케일에 기반한 배열. 로켈이 프랑스어 인 경우 프랑스어 AZERTY (?) 키보드가 필요할 수 있습니다. AZERTY가 맞습니까?

관련 문제