Ich versuche gerade das Spiel Snake nachzuprogrammieren. Wenn ich das neuzeichnen über paintComponent() veranlasse ruckelt es deutlich, wenn der Mauszeiger das Fenster verlässt. Ich habe eine alternative mit paint() im Internet gefunden. Diese läuft unabhängig von meiner Mausposition flüssig. Kann mir jemand das Problem erklären?
In der paint() methode wurde BufferedImage benutzt?
Was hat das mit der Mausposition zu tun?
Gruß Thomas
In der paint() methode wurde BufferedImage benutzt?
Was hat das mit der Mausposition zu tun?
Gruß Thomas
Java:
package snake;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Spielfeld extends JPanel {
int x;
int y;
JFrame fenster;
Image dbImage;
Graphics dbg;
public Spielfeld()
{
super();
fenster = new JFrame();
fenster.setPreferredSize(new Dimension(800,600) );
fenster.setLayout(new BorderLayout());
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenster.add(this, BorderLayout.CENTER);
fenster.pack();
fenster.setVisible(true);
setBackground(Color.green);
x = 0;
y = 150;
//laufen();
Thread r1 = new Thread(new Runnable()
{
public void run()
{
while(true)
{
x+=1;
y+=0;
try {
Thread.sleep(10);
} catch (InterruptedException ex) {
Logger.getLogger(Spielfeld.class.getName()).log(Level.SEVERE, null, ex);
}
repaint();
}
}
});
r1.start();
}
public void paint(Graphics g)
{
dbImage = createImage(800,600);
dbg = dbImage.getGraphics();
paintComponent(dbg);
g.drawImage(dbImage,0,0,this);
g.fillRect(x, y, 30,30);
}
/*
@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.fillRect(x, y, 30,30);
}
*/
public static void main(String[] argv)
{
new Spielfeld();
}
}