-2

これらのチュートリアルに従って、以下を作成しました。 http://www.youtube.com/playlist?list=PL54DB126285ED0420

Main.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();
  }
}

GamePanel.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 に答える