現在、Javaでレベルエディタを作成しています。レベルはJPanelにあります。このJPanelの中に、ゲーム要素(ヒーロー、敵、木、壁など)を配置します。すべての要素に対して、class.GameElementを使用します。
public class GameElement extends JPanel
{
protected int posX, posY;
private Color color;
public GameElement(int x, int y, Color color)
{
this.posX = x;
this.posY = y;
this.color = color;
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.setColor(color);
g.fillRect(0, 0, 50, 50);
}
}
GameElementクラスもJPanelです。KeyListenerを使用してゲーム要素のヒーローを移動できるようにしたい。
import java.awt.Color;
import java.awt.event.*;
public class Hero extends Entity implements KeyListener
{
public Hero(int x, int y, Color color)
{
super(x, y, color);
this.setFocusable(true);
this.addKeyListener(this);
}
public void keyPressed(KeyEvent k)
{
if(k.getKeyCode() == KeyEvent.VK_UP)
{
this.move(0, -1);
}
else if(k.getKeyCode() == KeyEvent.VK_DOWN)
{
this.move(0, 1);
}
else if(k.getKeyCode() == KeyEvent.VK_LEFT)
{
this.move(-1, 0);
}
else if(k.getKeyCode() == KeyEvent.VK_RIGHT)
{
this.move(1, 0);
System.out.println("test");
}
}
public void keyTyped(KeyEvent k)
{
}
public void keyReleased(KeyEvent k)
{
}
}
レベルエディタを起動したとき。ヒーローの表示は画面上で正常に表示されますが、キーボタンを押しても移動しません。正しいJPanelに集中していないからですか?