Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    104

    Attribuire in Java ad una variabile Color il valore di una stringa

    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.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Attribuire in Java ad una variabile Color il valore di una stringa

    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.
    Eh beh, certo ... stringa è un String e colore è un Color!

    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.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    104
    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...

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Mitsui
    se io faccio

    Color colore;
    colore = Color.red;

    funziona
    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
    io però voglio che proprio Color.red venga letto da quella stringa...
    Ok, come ripeto, c'è da fare delle comparazioni.

    codice:
    Color colore;
    String strDaFile;     // Stringa letta dal file
    
    if (strDaFile.equals ("Color.red"))
        colore = new Color (255, 0, 0);
    else
        ....
    Non è che puoi invertarti molto altro ...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    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

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Alex'87
    ma non c'e' un costruttore di Color che prende una stringa?
    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.

    Quindi ad esempio si può fare:
    Color c = Color.decode ("0xFF0000");
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    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

  8. #8
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    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);

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    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);
    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.").

    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:

    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;
            }
        }
    }
    poi basta fare:

    Color c = MyColors.decode ("navy");

    Che ne dite?? Mi sembra molto carina come idea!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    104
    Questa soluzione va benissimo:

    Originariamente 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.

    codice:
    Color colore;
    String strDaFile;     // Stringa letta dal file
    
    if (strDaFile.equals ("Color.red"))
        colore = new Color (255, 0, 0);
    else
        ....
    Non è che puoi invertarti molto altro ...
    solo che pensavo ne esistesse una che ad una variabile di tipo color gli assegnava una stringa
    grazie a tutti e scusate per il disturbo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.