【问题标题】:Hangman game trouble with GUI带有 GUI 的 Hangman 游戏问题
【发布时间】:2012-03-01 03:58:32
【问题描述】:

我是 Java 套接字的新手,我尝试通过套接字开发一个小游戏,服务器上一切正常,但在客户端,当我创建一个 JLabel 列表以显示每个单词的字母“_”时遇到了麻烦

好的,我显示我的代码,你会看到我遇到了什么麻烦。

我的代码片段如下:

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));
        * */


    }
}
    }

但是我得到了空指针异常,我不知道为什么?

有人可以帮助我或说明我的代码有什么问题。

谢谢!

【问题讨论】:

  • 那是不可能的。该行上可能存在 NPE 的唯一方法是如果 ArrayList 变量 labels 为空,但它不可能是空的,因为前面的行成功了。仔细检查您的错误消息!
  • 你能告诉我们你类的add方法是做什么的吗?
  • @Diego 我认为他的类扩展了 JFrame 或容器,它只是从容器添加的方法
  • @Dynguss 正如我在我的代码中提到的,您可以在上面看到我对我的代码 sn-p 的评论。 ErnestFriedman-Hill:你能详细解释一下吗? Diego:我的课程从 JPanel 扩展而来,这个 Panel 将 JLabel 添加到 JPanel
  • 如需尽快获得更好的帮助,请发帖SSCCE

标签: java swing list for-loop jlabel


【解决方案1】:

看不到任何明显的东西,所以我先重构为

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 上可能并不昂贵,但仍然]

顺便说一句:'this' 是什么类型的?

【讨论】:

  • 正如我之前所说的,“this”是一个从 JPanel 扩展的类
  • 没注意到,但我猜到了。
  • 我可以打印 'l' 但它不显示在我的面板上,我使用 l.setBound 但它不起作用
  • 所以你创建的标签都不可见?
  • @J2MENewBiew 这个答案是正确的,如果它对你没有帮助,那是因为你的代码中的错误 outside 你显示的 sn-p。要么你展示一个 sscce,要么你(很可能)没有人可以帮助你更多——毕竟,魔法球是不可靠的 ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-10
  • 1970-01-01
  • 2012-12-11
  • 1970-01-01
相关资源
最近更新 更多