-2

我遵循了这些教程并制作了以下内容。 http://www.youtube.com/playlist?list=PL54DB126285ED0420

主.java:

public class Main extends JFrame {

  GamePanel gp;

  public Main() {
    gp = new GamePanel();
    setSize(500, 400);
    setVisible(true);
    setResizable(false);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    add(gp);
  }

  public static void main(String[] args) {
    Main m = new Main();
  }
}

游戏面板.java:

public class GamePanel extends JPanel implements Runnable {

  // Double Buffering Variables
  private Image dbImage;
  private Graphics dbg;

  // JPanel Variables
  static final int GWIDTH = 500, GHEIGHT = 400;
  static final Dimension gameDim = new Dimension(GWIDTH, GHEIGHT);

  // Game Variables
  private Thread game;
  private volatile boolean running = false;

  public GamePanel() {
    setPreferredSize(gameDim);
    setBackground(Color.WHITE);
    setFocusable(true);
    requestFocus();

    // Handle all key inputs from the user
    addKeyListener(new KeyAdapter() {
      @Override public void keyPressed(KeyEvent e) {}
      @Override public void keyReleased(KeyEvent e) {}
      @Override public void keyTyped(KeyEvent e) {}
    });
  }

  public void run() {
    while (running) {
      gameUpdate();
      gameRender();
      paintScreen();
    }
  }// END run

  private void gameUpdate() {
    if (running && game != null) {
      // update the game state
    }
  }

  private void gameRender() {
    // create the buffer
    if (dbImage == null) {
      dbImage = createImage(GWIDTH, GHEIGHT);
      if (dbImage == null) {
        System.err.println("dbImage is still null!!!");
        return;
      } else {
        dbg = dbImage.getGraphics();
      }
    }

    // Clear the screen
    dbg.setColor(Color.WHITE);
    dbg.fillRect(0, 0, GWIDTH, GHEIGHT);

    // Draw the game elements
    draw(dbg);
  }

  // draw all game content
  public void draw(Graphics g) {}

  private void paintScreen() {
    Graphics g;
    try {
      g = this.getGraphics();

      if (dbImage != null && g != null)
        g.drawImage(dbImage, 0, 0, null);

      // For Linux
      Toolkit.getDefaultToolkit().sync();
      g.dispose();

    } catch (Exception e) {
      System.err.println(e);
    }
  }

  public void addNotify() {
    super.addNotify();
    startGame();
  }

  private void startGame() {
    if (game == null || !running) {
      game = new Thread(this);
      game.start();
      running = true;
    }
  }

  public void stopGame() {
    if (running)
      running = false;
  }

  private void log(String s) {
    System.out.println(s);
  }
}

它应该只在屏幕上打印一个“Hello World”字符串,但它没有执行。我已经检查了几次代码,但看不出有什么问题。

那么缺少什么导致它不显示字符串。

谢谢。

4

2 回答 2

0

好的。终于刚刚找到了。

在我的 Main.java 中,我会将add(gp);代码放在顶部。因为基本上它正在下降。

PS 再次提及。不小心把draw方法的内容擦掉了。傻我。对此感到抱歉。它应该g.drawString("Hello World!", 100, 100);在里面。

谢谢。

于 2012-04-18T13:38:57.187 回答
-1

那么缺少什么导致它不显示字符串。

对于初学者来说,“Hello World”字符串本身是不存在的。

我建议您再次阅读您引用的教程,因为您似乎是 Java 新手并且需要更多练习。

于 2012-04-17T20:49:40.683 回答