devo attriburiere ad una variabile di tipo Color il valore di una stringa, per capirci metto quello che dovrei fare io:
Color colore;
string stringa = "Color.red";
colore = stringa;
solo che così mi segna errore.
devo attriburiere ad una variabile di tipo Color il valore di una stringa, per capirci metto quello che dovrei fare io:
Color colore;
string stringa = "Color.red";
colore = stringa;
solo che così mi segna errore.
Eh beh, certo ... stringa è un String e colore è un Color!Originariamente inviato da Mitsui
devo attriburiere ad una variabile di tipo Color il valore di una stringa, per capirci metto quello che dovrei fare io:
Color colore;
string stringa = "Color.red";
colore = stringa;
solo che così mi segna errore.
C'è da dire che la classe Color ha un metodo static decode(String). Però accetta solo stringhe che contengono un valore numerico come specificato per Integer.decode(String).
Bisogna vedere quali e quanti valori devi poter accettare e in quale formato. Ma devi comunque farlo tu con N appositi test. Un qualcosa, per esempio, del tipo:
codice:if (stringa.equals ("red")) colore = new Color (255, 0, 0); else if (stringa.equals ("green")) colore = new Color (0, 255, 0); ....
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
il problema è che la stringa per esempio "Color.red" io la leggo da un file.
se io faccio
Color colore;
colore = Color.red;
funziona
io però voglio che proprio Color.red venga letto da quella stringa...
E certo ... Color è la classe e 'red' è una sua variabile "di classe" (ovvero static) che contiene un Color già inizializzato con il colore rosso (ce ne sono altri, blue, white, ecc...)Originariamente inviato da Mitsui
se io faccio
Color colore;
colore = Color.red;
funziona
Ok, come ripeto, c'è da fare delle comparazioni.Originariamente inviato da Mitsui
io però voglio che proprio Color.red venga letto da quella stringa...
Non è che puoi invertarti molto altro ...codice:Color colore; String strDaFile; // Stringa letta dal file if (strDaFile.equals ("Color.red")) colore = new Color (255, 0, 0); else ....
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
ma non c'e' un costruttore di Color che prende una stringa?
SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
Di questo libro e degli altri (blog personale di recensioni libri) | NO M.P. TECNICI
No, non c'è. Esiste, come ho già detto, il metodo statico decode(String) ma si aspetta un numero secondo il formato accettato da Integer.decode e non una stringa con il nome di un colore.Originariamente inviato da Alex'87
ma non c'e' un costruttore di Color che prende una stringa?
Quindi ad esempio si può fare:
Color c = Color.decode ("0xFF0000");
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
strano... mi pareva di ricordare diversamente... ridaro' un'occhiata alla documentazione![]()
SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
Di questo libro e degli altri (blog personale di recensioni libri) | NO M.P. TECNICI
un modo per ottenere un Color da una stringa è usare la reflection
codice:Field f = Class.forName("java.awt.Color").getField("red"); Color red = (Color)f.get(null);
L'idea in sé è valida ... solo che Mitsui voleva una stringa del tipo "Color.red", il che non permette di usare la reflection (a meno di spezzare la stringa e togliere il "Color.").Originariamente inviato da floyd
un modo per ottenere un Color da una stringa è usare la reflection
codice:Field f = Class.forName("java.awt.Color").getField("red"); Color red = (Color)f.get(null);
Anzi, volendo usare nomi singoli tipo "red", "silver", ecc... e visto che nella classe Color non ce ne sono tante di costanti, si potrebbe pensare di creare una propria classe di questo tipo:
poi basta fare:codice:import java.awt.*; import java.lang.reflect.Field; public class MyColors { public static final int red = 0xFF0000; public static final int silver = 0xC0C0C0; public static final int navy = 0x000080; public static Color decode (String name) { try { Field f = MyColors.class.getField (name); Integer i = (Integer) f.get (null); return new Color (i.intValue ()); } catch (Exception e) { return null; } } }
Color c = MyColors.decode ("navy");
Che ne dite?? Mi sembra molto carina come idea!
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Questa soluzione va benissimo:
solo che pensavo ne esistesse una che ad una variabile di tipo color gli assegnava una stringaOriginariamente inviato da andbin
E certo ... Color è la classe e 'red' è una sua variabile "di classe" (ovvero static) che contiene un Color già inizializzato con il colore rosso (ce ne sono altri, blue, white, ecc...)
Ok, come ripeto, c'è da fare delle comparazioni.
Non è che puoi invertarti molto altro ...codice:Color colore; String strDaFile; // Stringa letta dal file if (strDaFile.equals ("Color.red")) colore = new Color (255, 0, 0); else ....
grazie a tutti e scusate per il disturbo