2012-03-01 2 views
-1

자바 소켓에 새로운 기능이있어서 소켓을 통해 작은 게임을 만들려고하는데 모든 것이 서버에서는 괜찮지 만 클라이언트에서는 "_"문자를 표시하는 JLabel 목록을 만들 때 문제가 생깁니다. 각 단어의 글자에 대해GUI로 행맨 게임 문제

나는 내 문제가 무엇인지 알 수있을 것이다. 이 같은

내 Snippett 코드 :

List<JLabel>labels; 

private void getWordLabels(String word){ 
     char[] chars = word.toCharArray(); 
     System.out.println(chars); 
     int gapBetweenLetter = 300/chars.length; 
     labels = new ArrayList<JLabel>(); 

     for(int i =0; i< chars.length ;i++){ 

      // JLabel l = new JLabel("_"); 
      labels.add(new JLabel()); 
      labels.get(i).setText("_"); 
      //this.add(l); 
      //l.setBounds(10, 10, 10, 10); 
      //l.show(); 
      this.removeAll(); 
      this.revalidate(); 
      this.repaint(); 
      labels.get(i).setBounds((i*gapBetweenLetter) + 10, 100, 50, 50); 

      this.add(labels.get(i)); 

      labels.get(i).show(); 
      initComponents(); 

     /* labels.add(new JLabel("_")); 
     this.add(labels.get(i)); 
     //labels[i].setText("_"); 
     System.out.println(labels.get(i)); 
     * */ 


    } 
} 
    } 

하지만 난 널 포인터 예외를 가지고, 내가 왜 몰라?

누군가 내 코드에서 나를 도울 수 있거나 잘못 표시 할 수 있습니다.

감사합니다.

+0

그건 불가능합니다. 그 라인에 NPE가있을 수있는 유일한 방법은'ArrayList' 변수'labels'가 null이지만 앞선 행이 성공할 수 없기 때문입니다. 오류 메시지를 다시 확인하십시오! –

+0

클래스의'add' 메쏘드가 무엇을하는지 말해 줄 수 있습니까? – Diego

+0

@Diego 자신의 클래스가 JFrame 또는 컨테이너를 확장한다고 생각합니다. 컨테이너 내에서 – talnicolas

답변

2

은 분명 아무것도 볼 수 없습니다, 그래서 당신이 문제를보고하는 데 도움이 될 수 있습니다

for(int i =0; i< chars.length ;i++){ 
     JLabel l = new JLabel("_"); 
     labels.add(l); 
     this.add(l); 
     //labels[i].setText("_"); 
     System.out.println(l); 
    } 

에 리팩토링에 의해 시작했으면합니다. get (i)를 반복하지 않아도됩니다. [ArrayList에서는 아마도 값 비싸지는 않지만]

BTW : 어떤 유형이 'this'입니까?

+0

"this"는 JPanel에서 확장되는 클래스입니다. – Shen

+0

알아 차리지 못했지만 그럴 것이라고 생각했습니다. – John3136

+0

'l'을 인쇄 할 수 있지만 패널에 표시되지 않습니다. l.setBound를 사용하지만 작동하지 않습니다. – Shen