Estou desenvolvendo uma aplicação e precisava implementar o seguinte:
Quando o usuário clicar com o mouse inicia o processo de desenhar uma linha. Enquanto o mouse estiver pressionado a parte final da linha vai acompanhando o ponteiro do mouse. Quando o usuário soltasse o botão a parte final da linha fica no ponto onde o usuário soltou o botão do mouse.
To quebrando a cabeça com isso mas ta osso rsrsrsrs…
No evento de mouse clicked, ponha a parte inicial do segmento de reta
No evento de mouse released, ponha a parte final do segmento de reta
No evento de mouse dragged, mova o segmento de reta
Sobreponha o método paintComponent (não o paint) para que ele, nesta ordem:
a) Mostre a tal imagem
b) Desenhe os segmentos de reta que você criou nos eventos de mouse
note que eu não disse como é que se remove um segmento de reta (talvez você tenha de criar um KeyListener para olhar a tecla Del e remover o último segmento de reta), nem como é que se seleciona um segmento de reta para poder editá-lo (nesse caso você teria de pegar o MouseListener e ver o evento de mouse moved, e ver qual é o segmento de reta que é mais próximo do ponteiro do mouse).
Como você viu, isso é mais chato que parecia. Veja se não há alguma biblioteca que já faça essas partes chatas por você.
Realmente é mais chato do que parece… Consegui implementar algo só que não exibe a linha enquanto você está com o botão do mouse pressionado. Mas vlw as dicas. Segue o código.
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
public class teste extends JFrame implements MouseListener{
int x0,y0,x1,y1;
public teste(){
getContentPane().setLayout(null);
addMouseListener(this);
setBounds(20,20,200,200);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
x0 = (int) e.getX();
y0 = (int) e.getY();
}
@Override
public void mouseReleased(MouseEvent e) {
x1 = (int) e.getX();
y1 = (int) e.getY();
Graphics g = getGraphics();
paint(g,x0,y0,x1,y1);
}
public void paint(Graphics g,int x0,int y0,int x1,int y1){
g.drawLine(x0, y0, x1, y1);
}
public static void main(String[] args) {
new teste();
}
}