私は本質的にスペースインベーダーのゲームを再編集している大学のプロジェクトに取り組んでいます。これまでは、JPanelのサブクラス(バックグラウンドイメージ用)を含むメインのJFrameがあります。このサブクラスには、スプライトに使用しているJPanelの別のサブクラスが含まれています。しかし、私はそれを実行するとJFrameと背景JPanelは正常に動作しますが、スプライトを描画すると、サイズや位置を変更できない灰色の四角形が生成されます。ここで私は私のSpriteクラスのために持っているコードは次のとおりです。JPanelに追加されたときに画像がちょうど灰色の四角形になります
import java.awt.*;
import java.io.File;
import javax.swing.*;
public class Sprite extends JPanel
{
Image spriteImage;
int speedX;
int speedY;
Point pos;
final boolean MV_LEFT = false;
final boolean MV_RIGHT = true;
public Sprite(File _imageFile)
{
try {
spriteImage = javax.imageio.ImageIO.read(_imageFile);
} catch (Exception e) {
/* handled in paintComponent() */
}
speedX = 1;
speedY = 1;
pos = new Point(100,100);
}
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
if (spriteImage != null)
g.drawImage(this.spriteImage, this.pos.x, this.pos.y, this.getWidth(), this.getHeight(), this);
}
public void move(boolean direction)
{
if (direction == true)
{
this.pos = new Point((pos.x + speedX), pos.y);
repaint();
}
else
{
this.pos = new Point((pos.x - speedX), pos.y);
repaint();
}
}
}
私はそこで間違ったいくつかのものがあると確信しているが、paintComponent()メソッドのために、私はちょうど私が見つけた画像ハンドリングのチュートリアルのすべてをparrotedインターネットの周りにそれはまだ動作していないようです。私が忘れている巨大なものがありますか?