Bom dia… Eu fiz um esqueminha parecido como uma ferramenta de diagrama e liguei dois panels com uma linha desenhada pelo Graphics2D.
A minha pergunta: É possível disparar o evento de clique nesta linha? Ou seja, preciso saber se o usuário clicou sobre a linha para abrir um form referente ao relacionamento.
Meu código fico assim:
public class LinkedPanel extends JPanel {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
for(int i = 0; i < getComponentCount(); i++) {
Point2D.Double p1 = getCenter(getComponent(i));
PanelDiagram pnlPai = (PanelDiagram) getComponent(i);
List<RelacionamentoVO> lista = pnlPai.getRelacionamentos();
for (RelacionamentoVO item : lista) {
for(int j = 0; j < getComponentCount(); j++) {
PanelDiagram pnlFilho = (PanelDiagram) getComponent(j);
if (pnlFilho.getTbVO().getTabela().equals(item.getTabdestino().getTabela())) {
Point2D.Double p2 = getCenter(getComponent(j));
g2.draw(new Line2D.Double(p1, p2));
}
}
}
}
}
private Point2D.Double getCenter(Component c) {
Point2D.Double p = new Point2D.Double();
Rectangle r = c.getBounds();
p.x = r.getCenterX();
p.y = r.getCenterY();
return p;
}
}