java hintergrundfarbe abfragen
ich habe eine frage: und zwar muss ich für ein Programm die Hintergrundfarbe eines Buttons abfragen, ich bin dabei ein Kartenspiel zu programmieren und sobald die Hintergrundfarbe grün ist soll man die karte, mit einem Button, legen können.
danke schon mal im voraus :))
3 Antworten
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
Das c ist der Variablenname. Und ja, das geht auch mit mehreren
wofür steht denn das c in "Color c "? kann ich das ganze auch mit mehreren Buttons machen? ich habe 10 :D