changement dynamique des images java - Java - Programmation
Marsh Posté le 09-06-2010 à 17:43:55
lors de l'execution j'avais cette exception
host4
[213546845] CURRENT SERVICE STATE;host4;up;soft;
Exception in thread "main" java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(StringTokenizer.java:332)
at Teste.changeetat(Teste.java:149)
at Teste.main(Teste.java:43)
que dois-je faire!!!!????
Marsh Posté le 09-06-2010 à 18:25:13
Au lieu d'utiliser un StringTokenizer utilise String.split();
Ainsi tu pourras vérifier que la taille du tableau retourné correspond au nombre d'éléments que t'attends.
Sinon utilise la méthode countTokens() de ton StringTokenizer
Marsh Posté le 09-06-2010 à 21:37:16
salut;
merci "phnatomass" pour votre réponse
bah j'ai pa compri bien votre reponse,je suis encore debutante en java, merci de me corriger vous mm ma fonction si ce possible sinon s'il vous plait essayer de m'expliquer !!!
merci d'avance!!
Marsh Posté le 10-06-2010 à 09:47:34
Tu fais des .nextToken() à la suite sans vérifier qu'il y en a réellement d'autres. Donc forcément si tu as 3 éléments et tu fais 4 .nextToken() et bien ça plante avec NoSuchElementException.
D'ailleurs je vois pas l'intérêt du while(st.hasMoreTokens()) puisque tu récupères tous les éléments de la ligne à l'intérieur donc dans un cas normal si j'ai bien compris il devrait passer qu'une seule fois dedans.
Et mets ton code entre les balise [ code=java] [ /code] (sans les espaces) pour que ce soit lisible car là...
Marsh Posté le 10-06-2010 à 10:30:24
Code :
|
Marsh Posté le 10-06-2010 à 11:58:26
bonjour;
merci bien pour votre aide "phnatomass,Deamon"
lorsque j'ai essayé d'integrer la fonction dans ma classe cv ca marcha avec 0 erreur pas des exception et j'avais l'affichage de mon frame mais toujours il n'y a des images!!???
voila tous le code:
Code :
|
Marsh Posté le 10-06-2010 à 20:27:06
salut
je vous explique
cette classe sera appelle dans une autre classe à l'aide d'une boutton mais je veux enlever la fonction "void run" je l'ai mis juste pour tester si le prog se fonctionne ou pas !!!
ce programme lit d'un fichier texte (log2) qui est changeable cad à chaque fois on aura d'ajout des ligne au cour du temps
vraiment je n'ai sai pas comment dois_je faire je suis entrain de realiser un projet qui il faut le rendre ce samedi et je suis encore bloqué dans cette etape !!
sil'vous plait aider moi à trouver une solution à ce programme
merci
Marsh Posté le 11-06-2010 à 02:29:03
bonsoir
j'ai essayé de re-compiler mon programme ok j'avais l'affichage de l'image et le programme lit de deux fichiers mais le changement des images ne se réalise pas s'il vous plait aider à trouver la solution !!!
Marsh Posté le 12-06-2010 à 22:28:48
bonsoir
s'il vous plait moi à trouver la bonne réponse c'est très important pour moi ça entre dans mon projet!!!
Marsh Posté le 09-06-2010 à 17:40:03
slt,
j'ai essayé de faire un programme qui fait un appel à chaque fois à une image mais cet appel est conditionné : je m'explique j'ai dans une frame une ensemble des images qui representent des postes dans une societe,mon prog lit à partir du 1er fichier(test1:ou se fait la configuration des postes )et prend le nom et l'identifiant de chaque poste puis il passe au 2 eme fichier(log2:ou il y a l'etat des postes) et il lit l'etat et selon les données il fait l'appel de l'image
voile le code que j'ai fait:
public void changeetat( int id){
String ligne,ligne1;
String motA="";
String mot="";
String mott="";
String mot1="";
String mot2="";
String mot3="";
String mot4="";
String mot5="";
String com="";
String com1="";
try{
BufferedImage img = null;
BufferedReader fin1 = new BufferedReader(new FileReader("Test1.txt" ));//le fichier test1 : fichier texte ou il y a
//la configuration de lhote c comme une basse de donnée
while((ligne1=fin1.readLine())!=null)
{ StringTokenizer st1=new StringTokenizer(ligne1," ,.;: " );
while(st1.hasMoreTokens())
{mot=st1.nextToken();
if(mot.equals("host_name" ))
{ com=st1.nextToken();
System.out.println(com);
}
ligne1 +=ligne1+"\n";
if(mot.equals("HOST_ID" ))
{ com1=st1.nextToken();
BufferedReader fin = new BufferedReader(new FileReader("log2.txt" ));//le log file c est un fichier texte ou il y a l'etat des
//des hotes et des services
while((ligne=fin.readLine())!=null)
{StringTokenizer st=new StringTokenizer(ligne," ,.;: " );
System.out.println(ligne);
while(st.hasMoreTokens())
{
motA=st.nextToken();//motA contient [124542204] (exemple)
mott=st.nextToken();//mott contient CURREN
mot1=st.nextToken();//mot1 contient soit "HOST" soit "SERVICE"
mot2=st.nextToken();//mot2 contient "STAT"
mot3=st.nextToken();//le nom du host
mot4=st.nextToken();//ici si mot1= host alor mot4=etat(up or down)et si mot1=service alor mot4=nom de service
mot5=st.nextToken();//ici si mot1= host alor mot4=hard ou soft et si mot1=service alor mot4=etat du service(ok,warning,critial,unknown)
if(mot1.equals("host" ))
{ if(mot3.equals(com))
{ if(mot4.equals("DOWN" ))
{
try {
img = ImageIO.read(new File("cdown.jpeg" ));
} catch (IOException e) {e.printStackTrace();}
}
else if(mot4.equals("UP" ))
{ try {
img = ImageIO.read(new File("cup.jpeg" ));
} catch (IOException e) {e.printStackTrace();}
}
}
else if(mot4.equals("UP" )&&(mot1.equals("SERVICE" ))&&(mot3.equals("mot3" )))//on peut avoir une hote est up mais elle a un service
// qui ne fonctionne pas
{if((mot5.equals("CRIICAL" ))||(mot5.equals("UNKNOWN" ))||(mot5.equals("WARNING" )))
{ try {
img = ImageIO.read(new File("cpanne.jpeg" ));
} catch (IOException e) {e.printStackTrace();}
}
}
}
}
}
}
}
}
//fin.close();
fin1.close();
}
catch(IOException e)
{System.out.println(e.getMessage());}
}
}
voila une partie de mon fichier log2:
[213546845] CURRENT HOST STATE;host4;up;soft;
[213546845] CURRENT HOST STATE;host2;down;hard;
[213546845] CURRENT SERVICE STATE;host4;load;ok;soft;
[213546845] CURRENT SERVICE STATE;host4;log;critical;soft;
[213546845] CURRENT SERVICE STATE;host2;load;ok;soft
aider moi s'il vous plait à corriger cette faute!!!
merci d'avance!!!