2013-04-14 2 views
0

GUI로 작업 한 것은 처음입니다. 나는 그것으로 조작하는 것의 주위에 나의 머리를 감싸는 것처럼 보인다. 나는 대답이 단순한 것처럼 느낀다. (그리고 나는 그것에 대해 유감스럽게 생각한다.) 그러나 나는 단지 내 머리 속으로 들어갈 수 없다. :/4 개 연결; 2D 배열 혼동

저는 2D JLabel 배열을 기본 보드 ImageIcon으로 설정했습니다. 각 열 위에는 열 번호를 지정하는 버튼이 있습니다. actionPerformed 메소드에서, 나는 각 버튼이있다 : I 지정된 토큰에서 가장 낮은 행에 토큰을 추가하는 방법을 모르는

if(e.getSource()== (whatever column number button name)) 
{ 
} 

, 내가 발견 한 후 가장 낮은 행이 이미지 아이콘의 P0에 설정하는 것이 생각 , 플레이어 색에 따라 pR 또는 pB로 설정해야합니다. 그러나 p0가 저장된 가장 낮은 셀을 찾거나 플레이어 색상을 추적하는 루프를 작성하는 방법을 모르겠습니다.

final ImageIcon p0 = new ImageIcon("Board.jpg");// default board box 
final ImageIcon pR = new ImageIcon("Red.jpg"); 
final ImageIcon pB = new ImageIcon("Black.jpg"); 

JLabel [][] connectFourBoardComp = new JLabel[6][7]; 
for(int row=0, count=6; row<1; row++) 
{ 
    for(int col=0; col<7; col++, count++) 
    { 
      connectFourBoardHumn[row][col].setIcon(p… 
      System.out.println(connectFourBoardHumn[… 
    } 
} 

아무 도움이됩니다. 감사! :)

답변

0

그냥 색상을 사용자가 재생 때마다 전환, 현재 플레이어의 색상을 추적하려면

if (nextColor == pR) { 
    nextColor = pB; 
} 
else { 
    nextColor = pR; 
} 

가장 낮은 행을 가정 P0 아이콘 (와 첫 번째 행을 찾으려면 인덱스 0에있다), 하나를 찾을 때까지 행을 반복하면됩니다.

int firstEmptyRow = connectFourBoardComp.size(); // default case: the the row is full of tokens 
for (int i = 0; i < connectFourBoardComp; i++) { 
    if (connectFourBoardComp[i][column] == p0) { 
     firstEmptyRow = i; 
     break; // break out of the loop 
    } 
} 
+0

** ** 답장을 보내 주셔서 대단히 감사합니다! 이게 내가 쓸 것인가? :'if (e.getSource() == buttonCompCol0) { \t \t \t int firstEmptyRow = connectFourBoardComp.size(); // 기본 케이스 : 행 토큰 \t \t \t 가득 위해 (; 나는 connectFourBoardComp를 <; I = 0 int로 난 ++) \t \t \t { \t \t \t 경우 (connectFourBoardComp [I] [0] == P0) \t \t \t { \t \t \t firstEmptyRow = i; \t \t \t 중단; 루프 \t \t \t \t \t }} \t \t \t \t \t \t \t connectFourBoardComp [I] [0] .setIcon (nextPlayer) 탈옥 //; \t \t \t \t \t \t }'당신은 당신이 그것을 사용하지 않을 때문에 당신이 아무것도 첫 번째 빈 행을 계산 것이라고했다면 – Elva02

+0

번호. 마지막 명령은 다음과 같아야합니다. if (firstEmptyRow = connectFourBoardComp.size() 인 경우 오류 메시지가 표시되어야합니다. –

+0

모든 열에 대해 코드를 반복 할 때의 문제점은 무엇입니까? 내가 별도의 방법을 만든다면, 이것이 내가해야 할 일인가?:'actionPerformed' 메쏘드에서 각 버튼에 대해'int column'을 해당 숫자로 설정하고 메소드를 호출 할 것입니다. 이 메서드는'firstEmptyRow'를 검사하고 할당하고 색상에 따라 토큰을 배치합니다. 나는 이것을 정확하게 파악하고 있는가? 도와 줘서 고마워. – Elva02