logo Homepage
Pages: [1]
  Imprimer  
Auteur Fil de discussion: [java] classe Color en hexadécimal  (Lu 9154 fois)
the lsd
Administrateur

Profil challenge

Classement : 185/55106

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 3098

poulping for fun & profit


Voir le profil WWW
« le: 29 Novembre 2007 à 12:30:18 »

Re !

J'ai (encore)un souci en java...
Cette fois ci c'est le Color awt.
J'ai un string de type "FFFFFF" (donc de l'héxa ^^)
Or la classe Color n'accepte pas les strings, donc je me dis pas de problème, je le parse en int (Integer.parseInt), mais ca veut pas (allez savoir pourquoi...)
J'ai vu que Color accepte les int de type 0xFFFFFF, donc la question est simple : Y a t'il un moyen simple de créer un objet Color avec de l'héxa en argument ?

Code:
import java.applet.* ;
import java.awt.* ;
import java.awt.Font ;
import java.util.* ;

public class param2 extends Applet
{
String texte ;
String couleur ;
String taille ;
int i ;
Font police ;
public void init()
{
texte = getParameter("texte") ;
couleur = getParameter("couleur") ;
taille = getParameter("couleur") ;
i = Integer.parseInt (couleur) ;
Color coul = new Color (200, 30, 40) ;
setBackground (Color.green) ;

}

public void paint (Graphics g)
{
Random alea = new Random() ;
Boolean result_ale= alea.nextBoolean() ;
if (result_ale)
{
setForeground(Color.red);
}
else
{
setForeground(Color.blue);
}
police = new Font("Helvetica",0, i) ;
g.setFont(police);
g.drawString ("Le paramètre passé en argument est "+texte, 10, 20) ;
}
}
Journalisée

Newbie Contest Staff :
The lsd - Th3_l5D (IRC)
Statut :
Administrateur
Citation :
Cartésien désabusé : je pense, donc je suis, mais je m'en fous !
Spaulding

Profil challenge

Classement : 8/55106

Membre Complet
***
Hors ligne Hors ligne
Messages: 190


Voir le profil WWW
« #1 le: 29 Novembre 2007 à 14:07:44 »

Pour le parseInt, tu peux aussi passer le radix en argument (la base quoi)

Code:
String couleur=new String("FFFFFF");
int i;
i=new Interger.parseInt(couleur,16).value();

Et attention Int != int, l'un est un objet,  l'autre un type, d'ou le .value() à la fin.
Journalisée

---------------
the lsd
Administrateur

Profil challenge

Classement : 185/55106

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 3098

poulping for fun & profit


Voir le profil WWW
« #2 le: 29 Novembre 2007 à 15:27:07 »

ok ok je regarderais ca plus tard, je suis overbooké la, mais je tiens au jus. Merci Spaulding
Journalisée

Newbie Contest Staff :
The lsd - Th3_l5D (IRC)
Statut :
Administrateur
Citation :
Cartésien désabusé : je pense, donc je suis, mais je m'en fous !
Al3x
Profil challenge

Classement : 1113/55106

Membre Junior
**
Hors ligne Hors ligne
Messages: 54


Voir le profil
« #3 le: 29 Novembre 2007 à 16:47:18 »

Pourquoi tu tiens tant à utiliser de l'hexa alors que tu peux très bien utilisé le système rgb de cette manière :
http://java.sun.com/javase/6/docs/api/java/awt/Color.html#Color(int,%20int,%20int,%20int)

Je me permet de t'inviter à regarder la doc plus souvent vu que t'as l'air d'avoir du mal avec le Java :-P
http://java.sun.com/javase/6/docs/api/
Journalisée
the lsd
Administrateur

Profil challenge

Classement : 185/55106

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 3098

poulping for fun & profit


Voir le profil WWW
« #4 le: 29 Novembre 2007 à 17:07:19 »

La doc est devenue ma meilleure amie depuis une paire de semaines Al3x !

J'avais vu le constructeur Color (int, int, int), mais je pensais (et trouvais ca logique) qu'il y aie moyen de faire un obet Color avec une référence héxadécimale. Bon, si je ne peux pas faire autrement j'utiliserais ca, mais ce n'est pas ce que je préfère.

En fait, mon alternative (vu que je suis obligé d'avoir de l'héxa à un moment donné de l'histoire) était de passer mon String héxa en int, et de passer ensuite cet int dans le constructeur Color (int rgb), mais je dois mal m'y prendre...

Enjoy

The lsd
Journalisée

Newbie Contest Staff :
The lsd - Th3_l5D (IRC)
Statut :
Administrateur
Citation :
Cartésien désabusé : je pense, donc je suis, mais je m'en fous !
Chilly
Relecteur

Profil challenge

Classement : 273/55106

Membre Senior
*
Hors ligne Hors ligne
Messages: 307


Voir le profil
« #5 le: 29 Novembre 2007 à 18:37:35 »

Pour le parseInt, tu peux aussi passer le radix en argument (la base quoi)

Code:
String couleur=new String("FFFFFF");
int i;
i=new Interger.parseInt(couleur,16).value();

Et attention Int != int, l'un est un objet,  l'autre un type, d'ou le .value() à la fin.

Attention Integer et pas Interger... petite faute de frappe..
et sinon la classe c'est Integer et pas Int. d'où le "Integer." et pas "Int."

De plus es tu sûr d'avoir besoin de faire un new pour ne pas obtenir un objet puisque tu veux un int... ce que renvoie la méthode static de la classe Integer.
Il me semble donc qu'un int i = Integer.parseInt(machin); serait plus adéquat.
Journalisée

Non au langage SMS !!! http://sms.informatiquefrance.com
Al3x
Profil challenge

Classement : 1113/55106

Membre Junior
**
Hors ligne Hors ligne
Messages: 54


Voir le profil
« #6 le: 29 Novembre 2007 à 19:26:21 »

Il me semble donc qu'un int i = Integer.parseInt(machin); serait plus adéquat.

Oui. par contre faut garder le '16' pour que ce soit interprété comme de l'hexa :
int i = Integer.parseInt(machin, 16);
Journalisée
Spaulding

Profil challenge

Classement : 8/55106

Membre Complet
***
Hors ligne Hors ligne
Messages: 190


Voir le profil WWW
« #7 le: 30 Novembre 2007 à 09:15:51 »

Attention Integer et pas Interger... petite faute de frappe..
et sinon la classe c'est Integer et pas Int. d'où le "Integer." et pas "Int."
Oui, excusez-moi.
De plus es tu sûr d'avoir besoin de faire un new pour ne pas obtenir un objet puisque tu veux un int... ce que renvoie la méthode static de la classe Integer.
Il me semble donc qu'un int i = Integer.parseInt(machin); serait plus adéquat.
Ah oui tiens ! Mais j'aime tellement le code Java que je préfère en rajouter.
Journalisée

---------------
Pages: [1]
  Imprimer  
 
Aller à: