1

我是 Java 游戏编程的新手。我遵循了一些教程并观看了一些视频。我显然做错了,因为我每加载应用程序 10 次,图形就会显示一次。

游戏概念是一本足球剧本。我的目标是教我 8 岁的孩子在存在不同情况时该领域的哪一部分。

我使用 Eclipse 作为 IDE。以下是班级和相关成员的摘要。下面表示的类用于绘制一个字段和字段上的几条线。

注意:许多逻辑已被删除以最小化这篇文章的大小。如果您需要更多信息,请告诉我。


public class SoccerPlaybook {

  public static void main(String[] args) {
    new SoccerPlaybook();
  }

  public SoccerPlaybook() {
    JFrame frame = new JFrame();
    frame.add(new Game(this));
  }
}

public class Game extends JPanel {

  public Game(SoccerPlaybook soccerPlaybook) {
    this.soccerPlaybook = soccerPlaybook;
  }

  public void paintComponent(Graphics g) {      
    field.paintComponent(g);
  } 
}

public class Field extends JPanel {

  public Field(Game game) {
    this.game = game;
  }

  public void paintComponent(Graphics g) {
    g.setColor(Color.GREEN);
    g.fillRect(0, 0, game.getSoccerPlaybook().getWidth(), game.getSoccerPlaybook().getHeight());

    g.setColor(Color.WHITE);
    g.drawLine(200, 50, 400, 50);
    g.drawLine(200, 300, 400, 300);
    g.drawLine(200, 50, 200, 300);
    g.drawLine(325, 100, 400, 100);
    g.drawLine(325, 250, 400, 250);
    g.drawLine(325, 100, 325, 250);
  } 
}

我尝试过使用paint和paintComponent。两者似乎具有相同的结果。

感谢您的任何帮助。

4

1 回答 1

1

我认为你需要这样做:

frame.pack();
frame.setVisible(true);

这将布局框架并确保它被显示。您应该在添加 Game JPanel 后立即执行此操作。

您可能还会发现需要为 Game JPanel 设置首选大小。如果是这样,请在 Game 构造函数中添加以下内容:

this.setPreferredSize(new Dimensions(600, 400));
于 2013-03-28T01:03:03.707 回答