2012-03-01 33 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