So I've written a base to a short game, here is the panel class that is added to my JFrame:
package io.ryanshah;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import io.ryanshah.entity.player.EntityPlayer;
import io.ryanshah.util.TextureResource;
public class GamePanel extends JPanel implements KeyListener
{
protected JFrame parentWindow;
protected EntityPlayer player;
private TextureResource playerImg;
private TextureResource platformBg = new TextureResource("res/platform.png");
private int playerX, playerY;
public GamePanel(GameWindow parentWindow) {
super();
addKeyListener(this);
setFocusable(true);
this.parentWindow = parentWindow;
player = parentWindow.mainPlayer;
playerImg = player.getEntityTexture();
playerX = (parentWindow.getWidth() / 2) - (player.getEntityTexture().getImage().getWidth() / 2);
playerY = parentWindow.getHeight() - 150 - player.getEntityTexture().getImage().getHeight();
}
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_A) {
playerX--;
}
if(e.getKeyCode() == KeyEvent.VK_D) {
playerX++;
}
if(e.getKeyCode() == KeyEvent.VK_SPACE
|| e.getKeyCode() == KeyEvent.VK_W) {
playerY++;
}
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(platformBg.getImage(), 0, parentWindow.getHeight() - 150, null);
g.drawImage(playerImg.getImage(), playerX, playerY, null);
}
public void keyTyped(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
}
I've done KeyListener's like this before, so I don't know what the issue is here! Hope someone can shed some light as to why it isn't working :)
EDIT: I use setContentPane() to add my panel to the frame, but using add() doesn't work either.
Thanks.
Aucun commentaire:
Enregistrer un commentaire