Java Swing desenha linhas com o clique do mouse e arraste
Quero trazer de volta uma pergunta que foi feita antes:java desenhar linha como o mouse é movido
"Gostaria de adicionar um recurso ao meu aplicativo que permita ao usuário desenhar uma linha reta clicando com o mouse no local inicial e liberando-o no local final. A linha deve se mover conforme o mouse se move até que seja finalmente liberado; semelhante à maneira como uma linha pode ser desenhada usando o aplicativo Microsoft Paint.
Como implementar isso para que a linha seja repintada à medida que se move sem repintar outras coisas que já podem ser desenhadas nessa área retangular? "
A pergunta é: Como posso desenhar várias linhas com as linhas antigas ainda lá?
Este é o código que funciona para mim, mas a linha anterior é apagada assim que você desenha uma nova:
public static void main(String args[]) throws Exception {
JFrame f = new JFrame("Draw a Red Line");
f.setSize(300, 300);
f.setLocation(300, 300);
f.setResizable(false);
JPanel p = new JPanel() {
Point pointStart = null;
Point pointEnd = null;
{
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
pointStart = e.getPoint();
}
public void mouseReleased(MouseEvent e) {
pointStart = null;
}
});
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseMoved(MouseEvent e) {
pointEnd = e.getPoint();
}
public void mouseDragged(MouseEvent e) {
pointEnd = e.getPoint();
repaint();
}
});
}
public void paint(Graphics g) {
super.paint(g);
if (pointStart != null) {
g.setColor(Color.RED);
g.drawLine(pointStart.x, pointStart.y, pointEnd.x, pointEnd.y);
}
}
};
f.add(p);
f.setVisible(true);
}