Dynamisch Linien in Matrix zeichnen

Copia

Grünschnabel
Hallo zusammen,

ich erstelle mittels des GridBagLayouts eine Matrix, die so aussieht wie im Anhang.
Jetzt möchte ich ein Gitter zeichnen (zweites Bild), damit man, wenn die Matrix wesentlich größer wird, noch erkennen kann, zu wem das X gehört. Dazu wollte ich die paintComponent-Methode überschreiben.
Mein Problem ist nun, zu berechnen, wo welche Linie anfangen und enden muss, da das ja abhängig von den Labels oben und links ist. Hat da jemand eine Idee?
 

Anhänge

  • matrix.JPG
    matrix.JPG
    6,9 KB · Aufrufe: 114
  • matrix mit gitter.JPG
    matrix mit gitter.JPG
    8 KB · Aufrufe: 112
Hallo,

das Problem besteht leider immer noch. Hat jemand eine Idee?
Ist es an dieser Stelle viell. besser, eine JTable zu benutzen? In Zukunft ist nämlich auch geplant, die Kreuze bearbeiten, z.B. durch Klicken Entfernen zu können.
 
Hallo,

ich würde dir hierfür auf jeden Fall empfehlen, eine JTable zu benutzen... Sie besitzt im Grunde die Funktionen, die du willst, bereits und sieht auch noch besser aus ;)
Deine bisherige Lösung ist umständlicher als eine JTable und auch deine geplanten Funktionen würden sich mit der JTable um einiges einfacher realisieren lassen.

Gruß,
Martin
 
Hallo,

ich würde dir auch eine JTable empfehlen.

Aber zu deinem Problem:
Du kannst dir ja die Position der Labels holen um zu wissen wie lange und wo die Linien hin sollen.

Beispiel: Die erste vertikale Linie beginnt über dem Label "Zeile 2", also brauchst du hier die Y-Koordinate von dem Label. Da es ganz am Rand beginnt ist die X-Koordinate 0.

Also Punkt 1 ist X = 0 und Y = Label.Y

Die Linie endet hinter dem Label "Spalte 3". Da die Linie nicht bis ans Ende geht brauchst du hier die X und Y Koordinate von dem Label. Da du ja nicht willst das die Linie genau über dem Label liegt addierst du halt noch ein wenig Puffer dazu!

Gruß
 
Danke für die Tipps! Wie es aussieht, ist es wohl tatsächlich besser, eine JTable zu nutzen... denn mach ich mich mal an die Arbeit ;-)
 
Zuletzt bearbeitet:
Zurück