Probleme bei overrided paintComponent Funktion

evoleena

Erfahrenes Mitglied
Hallo Leute

Ich habe ein kleines Problem wo ich nicht so recht vorwärts komme.
Liegt an einer override Funktion.
PHP:
if (Clusters != null) {            
            for (int i = 0; i < Clusters.size(); i++) {
                Cluster p = (Cluster) Clusters.elementAt(i);
                Random r = new Random();
                Color c = new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256));                
                g.setColor(c);
                g.fillRect(p.x - 5, p.y - 5, 10, 10);
            }
        }
Dies ist ein Teil dieser Funktion, in der ich den Rechtecken unterschiedliche Farben gebe, die Rechtecke werden durch drücken der Rechten Maus Taste oder über einen Button angelegt. Aber immer wenn ich mit der Rechten Maustaste ein weiteres Dreieck anlege, bekommen die bereits erstellten eine andere Farbe.
Wie kann ich das so umbauen, dass die Rechtecke die gleiche Farbe bekommen?

Ich hoffe die Informationen reichen, um mein Problem zu verstehen

Gruss
Evo
 
Hallo,

wenn ich das korrekt verstehe, wirst du für die bereits einmal gezeichneten Rechtecke, deren Farbe in einem Array speichern müssen, um beim nächsten Zeichnen diese Farbe wiederverwenden zu können !

Nur für das jeweils neue Rechteck wird eine neue Farbe (ein neues Color-Objekt) erzeugt und
diese dann wieder gespeichert !

Gruß Jadix
 
Du definierst die Farben per Zufallszahlen in der paintComponent-Routine selbst. Das würde ich nicht machen, denn dann bekommst Du ganz zwangsläufig ständig neue Farben, genau so wie Du es beobachtet hast. Die paintComponent-Routine wird nämlich ständig bei einem Repaint angesrpungen. Definiere also die Farben in einer anderen Routine, am besten immer dann wenn der Anwender ein neues "Cluster" baut.

Das mit dem speichern von Farben in einem Array ist eine Möglichkeit.
Wenn Du Klasse Cluster selbst unter Kontrolle hast, würde ich dort die Farbe als Member speichern und in der paintComponent-Routine abrufen.

Nebenbei, es ist schöner (weil Standard) eine Variable mit einem kleinen Buchstaben beginnen zu lassen, also nenne Clusters lieber clusters.
 
Zuletzt bearbeitet:
Zurück