Hallo,
ich wollte eine Anwendung ähnlich wie Paint realisieren. Klappt auch schon ganz gut, habe den MouseMotionListener überschrieben. Wenn der Cursor über das JPanel gezogen wird, wird eine LInie gezeichnet. LEider ist mein Problem das beim bewegen des Fensters der Inhalt weck ist.
Also das ganze nicht wirklich in das Graphics Objekt mit übernommen wird. Habe zum testen in der paint Methode eine Linie gezeichnet, diese wird aber auch beim bewegen des Fenster wieder richtig dargestellt. Was mache ich falsch?
ich wollte eine Anwendung ähnlich wie Paint realisieren. Klappt auch schon ganz gut, habe den MouseMotionListener überschrieben. Wenn der Cursor über das JPanel gezogen wird, wird eine LInie gezeichnet. LEider ist mein Problem das beim bewegen des Fensters der Inhalt weck ist.
Also das ganze nicht wirklich in das Graphics Objekt mit übernommen wird. Habe zum testen in der paint Methode eine Linie gezeichnet, diese wird aber auch beim bewegen des Fenster wieder richtig dargestellt. Was mache ich falsch?
Code:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.JPanel;
public class InputSignaturePanel extends JPanel implements MouseMotionListener {
protected int lastX = -1;
protected int lastY = -1;
protected long lastDraw = -1;
protected final int WAIT_IN_MILLI = 100;
public InputSignaturePanel() {
super();
addMouseMotionListener(this);
setBackground(Color.lightGray);
}
public int getLastX() {
return this.lastX;
}
public int getLastY() {
return this.lastY;
}
public void setLastX(int x) {
this.lastX = x;
}
public void setLastY(int y) {
this.lastY = y;
}
public void setLastDraw(long arg) {
this.lastDraw = arg;
}
public long getLastDraw() {
return this.lastDraw;
}
public void mouseDragged(MouseEvent e) {
if((System.currentTimeMillis() - getLastDraw()) > WAIT_IN_MILLI) {
setLastX(-1);
setLastY(-1);
}
if(getLastX() == -1 || getLastY() == -1){
getGraphics().drawLine(e.getX(), e.getY(), e.getX(),e.getY());
setLastX(e.getX());
setLastY(e.getY());
} else {
getGraphics().drawLine(getLastX(), getLastY(), e.getX(),e.getY());
setLastX(e.getX());
setLastY(e.getY());
}
setLastDraw(System.currentTimeMillis());
}
public void paint(Graphics g) {
g.drawLine(0,0,50,50);
}
public void mouseMoved(MouseEvent e) {
}
}