Reputation: 1
Please note that I am quite new to all this programming. Right now i have a frame which adds a panel to it. I have use the paintcomponent method on the panel I believe, but now when i am trying to use keylisteners i need to move the image that i have drawn on the panel. I currently do not know how to repaint it.
import java.awt.*;
import java.io.*;
import java.awt.event.*;
import javax.swing.*;
@SuppressWarnings
("serial")
public class Game extends JPanel implements KeyListener
{
Car fo = new Car();
draw a=new draw();
public Game()
{
JFrame frame2=new JFrame("JASA1 Racing");
frame2.add(new draw());
frame2.setSize(500,600);//set frame size
frame2.setVisible(true);//made frame visible
frame2.setResizable(false);
frame2.addKeyListener(this);
frame2.setFocusable(true);
}
public class draw extends JPanel
{
private static final long serialVersionUID = 1L;
public void redraw()
{
repaint();
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
ImageIcon ic2=new ImageIcon("C:\\Users\\Shawn\\track.jpg");
Image img=ic2.getImage();
g.drawImage(img, 0, 0,null);
g.drawImage(fo.getcar(),fo.getX(),fo.getY(),null);
System.out.println(fo.getX() + " " + fo.getY());
}
}
public void keyPressed(KeyEvent e)
{
int key = e.getKeyCode();
if(key == KeyEvent.VK_LEFT)
{
fo.move(-50, 0);
System.out.print(fo.getX());
a.repaint();
}
else if(key == KeyEvent.VK_RIGHT)
{
fo.move(50, 0);
System.out.print(fo.getX());
a.redraw();
}
}
public void keyReleased(KeyEvent e)
{
}
public void keyTyped(KeyEvent e)
{
}
}
Upvotes: 0
Views: 75
Reputation: 347194
draw a=new draw();
isn't what you've added to the frame, you've used frame2.add(new draw());
instead.
Try using frame2.add(a);
I'd also consider using Key Bindings as it will allow you to overcome the focus issues related to KeyListener
Upvotes: 2