Amigos com estão?
Pois então, estou treinando muito a aprendendo bastante, mas estou tendo um probleminha aqui com Draw(shape), pois preciso posiciona-lo na posicão x, y que eu deseje ou seja desenhar o shape numa posição especifica, então estou usando o método translate(). Se eu não usar buffer funciona normalmente porem se usar…, vejam o código completo do applet:
package testejava;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.HeadlessException;
import java.awt.Image;
import java.awt.Point;
import java.awt.Shape;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import javax.swing.JApplet;
public class TestaApplet extends JApplet implements Runnable
{
double x, y, ax, ay;
Shape sh;
Thread th;
boolean threadSuspended;
Image img;
Graphics2D buff;
@Override
public void init()
{
super.init();
sh = new Rectangle2D.Double(0,0, 20, 20);
setSize(640, 480);
x = 20;
y = 20;
th = null;
img = new BufferedImage(640, 480, BufferedImage.TYPE_INT_RGB);
buff = (Graphics2D) img.getGraphics();
}
@Override
public void start()
{
if (th == null)
{
th = new Thread(this);
threadSuspended = false;
th.start();
} else
{
if (threadSuspended)
{
threadSuspended = false;
synchronized (this)
{
notify();
}
}
}
}
@Override
public void stop()
{
threadSuspended = true;
}
@Override
public void update(Graphics g)
{
paint(g);
}
@Override
public void paint(Graphics g)
{
g.drawImage(img, 0, 0, null);
}
@Override
public void run()
{
while (th.isAlive())
{
try
{
Point p = getMousePosition();
if (p != null)
{
ax = p.x;
ay = p.y;
repaint();
}
Thread.sleep(10);
buff.setColor(Color.black);
buff.fillRect(0, 0, getSize().width, getSize().height);
buff.setColor(Color.white);
if (x < ax) x += 1; else x -= 1;
if (y < ay) y += 1; else y -= 1;
buff.translate(x, y);
buff.draw(sh);
}
catch(Exception e)
{
}
}
}
}
Rodem e vejam o que acontece!
Alguem me ajuda?
Obrigado a todos!