Java [Swing] Komponenten(JPanel) markieren?

DaysShadow

Admiral
Registriert
Jan. 2009
Beiträge
9.270
Hi,

ich habe ein Excel-artiges Gitter mit Elementen, die ich gerne zwecks Kopieren und Einfügen mit einer halbdurchsichtigen Farbe überziehen würde, wenn sie entsprechend mit STRG + Klick ausgewählt werden, wie man es in dem Fall z.B. auch von Excel kennt.

In welcher Form mache ich das am besten? Gibt es eine Methode um eine "Überzugsfarbe" zu setzen? Ich dachte erst an setForeground, aber das scheint nicht das zu tun was ich dachte.
Einfach noch ein JPanel hinzufügen, was ich nicht zeichnen lasse wenn das Element nicht markiert ist oder ein Rechteck mit entsprechender Farbe in der paintComponent-Methode zeichnen?

Habe dazu leider irgendwie nichts finden können und hier gibt es ja Leute die Swingerfahrung haben ;)

Danke!
 
swing liegt weit weit zurück, aber wenn ich mich recht erinnere ich das Glass pane nicht diesjeniges welches auf dem dialog etc. gezeichnet werden sollten?
das ding hat mir damals jedenfalls massig probleme verursacht, sodass ich mir geschworen habe es nie wieder zu nutzen.

kann man nicht einfach ne box in der entsorechenden zelle zeichnen lassen und der eine transparenz geben?

bzw. wieso änderst du nicht den Hintergund?
du musst bedenken, wenn du ein halbtransparentes pane über der zelle zeichnest, wird auch der text nur noch halb sichtbar!
die gänigste methode ist einfach den Hintergrund entsprechend anzupassen, das der user sieht die zelle wurde ausgewählt. evtl halt noch die vordergrundfarbe entsprechend aufhellen, sollte über nen eigenen renderer (default renderer erweitern sodass er makierte zellen anders darstellt) leicht zu bewerkerstelligen sein.

p.s.
nennt sich highlight ;) meist gibts eine highlight color, die schon vorberechnet ist. z.b. wenn der bg weiß, ist und makiert soll es blau sein, nimmst halt einen hellblauen farbton, schon sieht es aus als wäre es blau aber halb transparent ;)
 
Zuletzt bearbeitet:
Die Zellen beinhalten keinen Text sondern von mir in paintComponent platzierte und gezeichnete Bilder, weshalb setForeground z.B. schonmal nicht geht, da sich das auf den Text von z.B. JLabel bezieht, wenn ich das richtig verstanden habe.

Den Hintergrund ändern würde nichts bringen, weil dann die Bilder immer noch in der normalen Farbe gezeichnet würden.

Das einfachste ist scheinbar in besagter paintComponent die ich ja ohnehin schon überschrieben habe, einfach im Fall der Markierung g.setColor( color ) und anschließend g.fillRect aufzurufen mit der Größe der Zelle und schon habe ich meine halbtransparente Überzugsfarbe.

Danke an beide ;)
 

Ähnliche Themen

Zurück
Oben