java hintergrundfarbe abfragen

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet
if(button.getBackground().getRGB() == Color.GREEN.getRGB())
{
    ...
}

Mit button.getBackground() wird die Hintergrundfarbe abgerufen. Ich bin mir nicht sicher, ob die Color-Klasse den "=="-Operator überlädt (oder ob das in Java überhaupt nötig ist), weshalb hier erst die Farbe in einen RGB-Wert umgewandelt wird. Dieser wird dann mit dem RGB-Wert für die Farbe Grün verglichen - zwischen die beiden geschweiften Klammern schreibst du dann, was passieren soll, wenn die Farbe grün ist.

Du kannst dir ganz einfach eine eigene Methode schreiben.

Hier einmal ein Beispiel: pastebin.com/jp6ffJZE

Auf dieser Seite: http://cloford.com/resources/colours/500col.htm Kannst du den Rot, Blau und Grün Anteil deiner Farbe nachschauen und sie dann mit einer if Anweisung vergleichen.

Color c = deinButton.getBackground();

mit c.getRed(), c.getGreen() und c.getBlue() kommst du an die einzelnen RGB-Farbkanäle. Vergleichen könntest du auch mit

if ( c.getRGB() == Color.GREEN.getRGB())
{
   ...
}

Beachte dass die Farbe dann EXAKT gleich sein muss, damit das matched. Wenn du nur eine grünliche Farbe vergleichen willst solltest du die Farbe zunächst ins HSV oder HSB Modell umrechnen.

Zum Schluss noch eine Anmerkung: Das ganze ist keine empfehlenswerte Architektur. Es ist eigentlich ein NoGo anhand einer Button-Farbe Entscheidungen zu treffen. Für die Verarbeitungslogik sollte es einen Controller geben der die Entscheidungen anhand seiner Daten trifft. Und anhand dessen dann auch die Buttonfarbe steuert


showviewma 
Beitragsersteller
 26.05.2013, 17:50

wofür steht denn das c in "Color c "? kann ich das ganze auch mit mehreren Buttons machen? ich habe 10 :D