Ola amigos esse é meu primeiro post aqui nesse fórum, eu estou desenvolvendo um pequeno aplicativo de simulação de AF (Autômatos Finitos), para meu curso de Engenha de Computação, como pode ser visto na foto abaixo e testado com o *.jar em anexo.
Estou usando JPanel’s para representar (conter o desenho da circulo) cada estado e por isso tenho como capturar os eventos do mouse associados a eles, o que simplifica bastante as questões de seleção e movimentação! Contudo as linhas que ligam os vários estados em um grafo de autômatos, chamadas de linhas de transições não são representadas por JPanel e sim são desenhas pelo JPanel que contém todos os estados partindo do centro de um estado até o centro de outro estado!
O MEU PROBLEMA É: Como selecionar essas linhas de transições com o mouse uma vez que elas são apenas desenhos gráficos feitos com Graphics2D. draw() ???
// Desenhar linha ou arco
public void DesenharLinha(Graphics2D g2d) {
// Se os estados forem diferentes
if(!transicao.getEstadoAnterior().equals(transicao.getNovoEstado())) {
// Desenha linha!
g2d.draw(getLinha());
.
.
.
Eu pensei em capturar o clic do mouse e então verificar qual a linha que passa mais próximo de onde ocorreu o clic (levando em consideração um margem de proximidade máxima é claro!) e então assim eu poderia saber qual a linha foi clicada e então marcar ela para edição… Mas eu gostaria de sugestões e comentário ou que alguém me dia a “Forma Correta” de fazer isso!
Desde já agradeço a ajuda dos amigos!
