首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JPanels没有出现,有点像

JPanels没有出现,有点像
EN

Stack Overflow用户
提问于 2016-12-20 11:11:26
回答 1查看 58关注 0票数 0

我是一个在学校的业余爱好者,用java做了一个蛇游戏,它并不完整,我遇到了一个我似乎无法修复的问题。在吃了目标之后,身体的第一和第二部分显示得很好,但在那之后就不显示了。

添加正文部分的代码:

代码语言:javascript
复制
  public void addBody(int x, int y) {
    snekBody.add(new JPanel());
    snekBody.get(snekBody.size() - 1).setBackground(new Color(new Random().nextInt(255), new Random().nextInt(255), new Random().nextInt(255)));
    snekBody.get(snekBody.size() - 1).setVisible(true);
    snekBody.get(snekBody.size() - 1).setBounds(x*score, y*score, BODY_WIDTH, BODY_HEIGHT);
    game.add(snekBody.get(this.snekBody.size() - 1));
    revalidate();
  }
}

移动主体部分的代码(moveUp、moveDown等:

代码语言:javascript
复制
public synchronized void moveRight(int x, int y) {
    timer++;
    while (!this.right) {
      try {
        wait();
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
    head.setBounds(x, y, 20, 20);
    xCoords.add(x);
    yCoords.add(y);
    //snekBody is an ArrayList of type JPanel
    for(int i = 0; i < snekBody.size(); i++) {
      if (i > 0) {
        snekBody.get(i).setBounds(xCoords.get(timer-(10*score)), yCoords.get(timer-(10*score))+5, BODY_WIDTH, BODY_HEIGHT);
      } else {
        snekBody.get(i).setBounds(xCoords.get(timer-10), yCoords.get(timer-10)+5, BODY_WIDTH, BODY_HEIGHT);
      }
    }
    repaint();
    notifyAll();
    revalidate();
  }

调用addBody的代码:

代码语言:javascript
复制
 if (snek.up) {
          snek.addBody(snek.xCoords.get(snek.timer-20), snek.yCoords.get(snek.timer-20));

the second picture is the snake when more than two targets have been eaten. the panels for the body just stop showing up. The first picture is the snake when two targets have been eaten

EN

回答 1

Stack Overflow用户

发布于 2017-02-07 23:11:48

原来,面板是一个接一个地显示,因此我看不到它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41234282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档