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 strunreklamy
Podejście wydłuża się dwukrotnieGdybym 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.