Potrzebuję zrobić edytor diagramów.
Zabrałem się zatem do uczenia swinga. Stworzyłem kod klasę rozszerzajacą JPanel, która tworzy "bloczki"(czyt. prostokąty). Przechwytuję zdarzenia które dotyczą JPanel i wszystko jest w porządku. Jednak to jest "bloczek", który ma takie same wymiary jak reprezentujący go JPanel.

A teraz chciałbym zrobić linie łączące moje "bloczki". Tworzenie JPanel żeby namalować na nim linie 300x300 px po skosie jest dość słabym rozwiązaniem. Bo JPanel przechwyci znacznie więcej zdarzeń (tj. na znacznie większym obszarze) niż powinien.

Jak zauważyłem aby przechwycić zdarzenia potrzebuję obiektu java.awt.Component

Stąd moje pytania:

  1. czy Component może przyjmować nieregularne kształty czy musi to być prostokąt.
  2. czy można zrobić tak aby przepuścić zdarzenie? chodzi mi konkretnie o to czy jeżeli w JPanel dotyczącym jakiejś linii stwierdzimy "to zdarzenie mnie nie dotyczy", można zrobić aby zdarzenie przeszło do JPanelu znajdującego się pod nim, i czy jest to słuszne podejście?
  3. czy jednak muszę stworzyć własny komponent na którym sam sprawdzam czy zdarzenie które otrzymałem dotyczy konkretnej figury i sam zarządzać warstwami

Innymi słowy czy są biblioteki/klasy które wspomagałyby rozwiązanie mojego problemu czy nie?