Schriftfarbe ändern

Status
Nicht offen für weitere Antworten.

web4

Mitglied
Hallo zusammen,

ich habe spasses halber ein applet erstellt, in dem ich per html dokument ein java text ausgeben kann. Absolut sinn und zwecklos ich weiss - aber der weg ist das ziel🙂

Jetzt habe ich ein Syntaxproblem bei der Farbe.
Code:
screen.setColor(Color.red);
Funktioniert einwandrei -> jedoch habe ich jetzt in der PARAM variable "farbe" z.B. den Wert blue.

Und wenn ich jetzt sage:
Code:
screen.setColor(Color.farbe);
bringt er ein fehler - logisch, denn die farbe "farbe" gibt es nicht. Ich will jedoch, dass er den Inhalt der Variable nimmt...

bei php setzt man dann einfach ein '' oder "" um die variable - bei java funktionierts anscheinend nicht.

Kann mir jemand sagen, wie man dieses Problemchen beheben kann?
Gruss
web4
 
Eine "schöne" Möglichkeit gibt es nicht. ("Schön" wäre es in gewisser Hinsicht, dafür Reflection zu verwenden ... aber auch nur in gewisser Hinsicht :wink: ).

Du kannst entweder sowas machen wie
Code:
String farbe = "blue"; // Eingabe
....
Color color = Color.black;
if (farbe.equals("red")) color = Color.red;
else if (farbe.equals("green")) color = Color.green;
else if (farbe.equals("blue")) color = Color.blue;
...
oder den Farb-String nicht als Namen übergeben, sondern als HTML-Farbcode, und dann sowas wie

Code:
String farbe = "#0000FF"; // Eingabe

int rgb = Integer.parseInt(farbe.substring(1), 16);
Color color = new Color(rgb);
 
hallo,

hmm, vielen dank für die hilfe... aber funktionieren tut es leider noch nicht ganz.

also ich habe jetzt
Code:
String farbe;
...
Color color = Color.black; 
if (farbe.equals("white")) color = Color.white; 
else if (farbe.equals("blue")) color = Color.blue; 
else if (farbe.equals("red")) color = Color.red; 
...

genommen.. die möglichen variablen heissen white, blue, red. Die Variable Farbe wird durch getParameter("farbe") gefüllt.

Er bringt mir den fehler: illegal start of type


Und die Einbindung ist mir auch noch nicht ganz klar. Wie muss es dann bei
Code:
screen.setColor(???);
heissen?

Vielen Dank für die Hilfe (und Geduld 🙂 )
 
Wo sagt er das denn?
Code:
import java.awt.*;

class ColorTest
{
    public static void main(String args[])
    {
        System.out.println("white -> "+getColor("white"));
        System.out.println("red   -> "+getColor("red"));
    }

    public static Color getColor(String farbe)
    {
        Color color = Color.black;
        if (farbe.equals("white")) color = Color.white;
        else if (farbe.equals("blue")) color = Color.blue;
        else if (farbe.equals("red")) color = Color.red;
        return color;
    }
}

Wenn du die (statische) Methode getColor in deine Klasse packst, solltest du sowas wie
screen.setColor(getColor(farbe));
aufrufen können.

P.S: Eine Alternative (die sich bei SEHR vielen Farben und SEHR vielen Zugriffen auf diese Farben lohnen könnte) wäre, die String-Color-Paare in eine TreeMap zu packen. (Ist aber hier sicher nicht notwendig)
 
mein fehler! :x

ich hatte den code nicht in einer klasse... ich sehe zwar nicht ganz ein warum eine eigene klasse nötig ist, aber das problem ist gelöst. Auf jeden Fall vielen Dank marco13!

Falls mir jemand noch erklären möchte, warum man hier eine Klasse braucht, nur zu🙂 Würde mich noch interessieren 🙂 Wenn möglich in Noobsprache 😉

Falls jemand mal des Rätsels Lösung suchen sollte, hier ist sie:

Code:
public static Color getColor(String farbe) { 
Color color = Color.black; 
if (farbe.equals("white")) color = Color.white; 
else if (farbe.equals("blue")) color = Color.blue; 
else if (farbe.equals("red")) color = Color.red; 
return color; 
}

Aufgerufen wird die Farbe dann durch:
Code:
screen.setColor(getColor(farbe));
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben