2012-03-01 55 views
-1

Im新的Java套接字,我嘗試通過套接字開發一個小遊戲,在服務器上一切正常,但在客戶端,當我創建一個JLabel列表來顯示一個字母「_」時,對於每個字母字Hangman與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

這是不可能的。如果'ArrayList'變量'labels'爲null,但是不能這樣做,因爲前面的行會成功。仔細檢查你的錯誤信息! – 2012-03-01 04:04:06

+0

你能告訴我們你班上的add方法嗎? – Diego 2012-03-01 04:04:37

+0

@Diego我認爲他的類擴展了JFrame或容器,它只是從容器 – talnicolas 2012-03-01 04:12:08

回答

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

正如我之前告訴「這個」是從JPanel – Shen 2012-03-01 04:38:07

+0

擴展的類沒有注意到,但我有點認爲它。 – John3136 2012-03-01 04:43:39

+0

我可以打印「L」,但它不顯示我的面板上,我使用l.setBound但它不能正常工作 – Shen 2012-03-01 05:01:12