paint () Methode würde nicht auf JPanel zeichnen
Ich habe einige Quellcodes zum Zeichnen in Java ausprobiert und sie funktionierten einwandfrei, aber als ich versuchte, einen eigenen zu erstellen, konnte ich das @ nicht bekommepaint(Grahpics g)
Methode zur Arbeit! Ich habe mir die Codes noch einmal angesehen und einige der Tutorials auf den Oracle-Seiten durchgesehen, aber ich scheine nicht in der Lage zu sein, zu wissen, warum es nicht funktionieren würde. kann jemand bitte nachsehen und mir sagen was hier nicht stimmt ??
Hauptmethode: public class main
{
public static void main(String[] args)
{
new board();
}
}
Tafel
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
public class board implements ActionListener
{
private JFrame f = new JFrame("Speedy");
private JPanel gamePanel = new JPanel();
private Image bg = new ImageIcon(this.getClass().getResource("road.png")).getImage();
private Timer t;
private car myCar = new car();
public board()
{
t = new Timer(50,this);
t.start();
gamePanel.setSize(600,400);
gamePanel.setDoubleBuffered(true);
gamePanel.setFocusable(true);
gamePanel.addKeyListener(new TAdapter());
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(gamePanel,BorderLayout.CENTER);
//f.addKeyListener(new TAdapter());
f.setBounds(200,100,600,400);
f.setVisible(true);
f.revalidate();
f.repaint();
}
public void paint(Graphics g) {
gamePanel.paint(g);
Graphics2D g2d = (Graphics2D)g;
g2d.drawImage(bg,0,0,null);
g2d.drawImage(myCar.getImg(), myCar.xPos, myCar.yPos, null);
System.out.println("Painted");
g.dispose();
}
public void actionPerformed(ActionEvent e)
{
gamePanel.repaint();
//System.out.println("Painting..");
}
private class TAdapter extends KeyAdapter {
public void keyReleased(KeyEvent e) {}
public void keyPressed(KeyEvent e)
{
myCar.keyPressed(e);
System.out.println("You pressed: "+e);
}
}
}
car.java:
import java.awt.Image;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import javax.swing.ImageIcon
;
public class car
{
private Image image;
public int xPos,yPos;
public car()
{
image = new ImageIcon(this.getClass().getResource("car.png")).getImage();
xPos = 300;
yPos = 200;
System.out.println(image.getWidth(null));
}
public Image getImg() {return image;}
public void move() {}
public void keyPressed(KeyEvent e)
{
int key = e.getKeyCode();
if (key == KeyEvent.VK_LEFT) xPos -= 1;
if (key == KeyEvent.VK_RIGHT)xPos += 1;
if (key == KeyEvent.VK_UP) yPos -= 1;
if (key == KeyEvent.VK_DOWN) yPos += 1;
}
}
Es gibt keine Fehler, es zeigt mir die Breite des Bildes, die richtig ist, auch der Timer löst dasActionListener
, ebenfallsKeyListener
funktioniert, aber die Bilder würden nicht zeichnen! daspaint(Graphics g)
Methode will einfach nicht ausgelöst werden! Googeln hat nicht geholfen .. ich dachte das wäre ein häufiges problem aber niemand hat das problem das ich habe alle lösungen sind mir durchgefallen Hilfe bitte? Wenn jemand erklären kann, wäre es sehr dankbar!