Projekt: dwukrotnie rozszerz JPanel lub podaj JPanel jako parametr?

Mam tutaj problem z projektowaniem. Istnieją dwie opcje, które można zrealizować, ale nie lubię żadnej.

Muszę zapewnić dwie funkcje w moim JPanelu.

narysuj kilka liniinarysuj kilka strun

reklamy

Podejście wydłuża się dwukrotnie

Gdybym tylko musiał rysować linie, mogę po prostu skopiować poprzednie rozwiązanie z następującej odpowiedzi.

Narysuj linię w JPanel, klikając przycisk w Javie

public class LinePanel extends JPanel {
...
@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    ...

Ale ponieważ muszę dodać drugą funkcjonalność, musiałbym zrobić coś takiego

public class LineStringPanel extends JPanel {

który pozostawiłby LinePanel tylko bezużyteczną klasę pośrednią.

Utwórz dwie klasy LineDrawer i StringDrawer i przekaż JPanel jako parametr do jakiejś metody, która wykona rysunek. Problem tutaj, który musiałbym zadzwonić, co nie jest zalecane.

Wykonywanie niestandardowego malowania

Graphics g = panel.getGraphics();

Co myślisz i możesz polecić?

UPD: Wewnątrz JPanel znajdują się liczne JLabels jako dziecko, które reprezentują jednostki i cechy.

Linie są relacjami między niektórymi cechami jednostek, a ciągi są rodzajem powiadomień dla niektórych działań.

Chcę więc pokazać String na górze (z przodu) potomnych etykiet JLabels.

Również JPanel znajduje się wewnątrz JScrollPane.

questionAnswers(1)

yourAnswerToTheQuestion