changement dynamique des images java

changement dynamique des images java - Java - Programmation

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("c:/down.jpeg" ));
        } catch (IOException e) {e.printStackTrace();}
           
             }
             else if(mot4.equals("UP" ))
                       {     try {
            img = ImageIO.read(new File("c:/up.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("c:/panne.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!!!

Reply

Marsh Posté le 09-06-2010 à 17:40:03   

Reply

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!!!!????

Reply

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


Message édité par phnatomass le 09-06-2010 à 18:29:31
Reply

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!!
 

Reply

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


Message édité par Deamon le 10-06-2010 à 09:50:39
Reply

Marsh Posté le 10-06-2010 à 10:30:24    

Code :
  1. package test;
  2. import java.awt.image.BufferedImage;
  3. import java.io.BufferedReader;
  4. import java.io.File;
  5. import java.io.FileReader;
  6. import java.io.IOException;
  7. import java.util.StringTokenizer;
  8. import javax.imageio.ImageIO;
  9. public class Machin {
  10. public void changeetat(int id) {
  11.  String ligne, ligne1;
  12.  String motA = "";
  13.  String mot = "";
  14.  String com = "";
  15.  String com1 = "";
  16.  try {
  17.   BufferedImage img = null;
  18.   // Le fichier test1 : fichier texte ou il y a
  19.   // La configuration de lhote c comme une basse de donnée
  20.   BufferedReader fin1 = new BufferedReader(new FileReader("Test1.txt" ));
  21.   while ((ligne1 = fin1.readLine()) != null) {
  22.    StringTokenizer st1 = new StringTokenizer(ligne1, "  ,.;: " );
  23.    if (st1.hasMoreTokens()) {
  24.     mot = st1.nextToken();
  25.     if (mot.equals("host_name" ) && st1.hasMoreTokens()) {
  26.      com = st1.nextToken();
  27.      System.out.println(com);
  28.     }
  29.     ligne1 += ligne1 + "\n";
  30.     if (mot.equals("HOST_ID" ) && st1.hasMoreTokens()) {
  31.      com1 = st1.nextToken();
  32.      // le log file c est un fichier texte ou il y a l'etat
  33.      // des
  34.      // des hotes et des services
  35.      BufferedReader fin = new BufferedReader(new FileReader("log2.txt" ));
  36.      while ((ligne = fin.readLine()) != null) {
  37.       String mott = "";
  38.       String mot1 = "";
  39.       String mot2 = "";
  40.       String mot3 = "";
  41.       String mot4 = "";
  42.       String mot5 = "";
  43.       StringTokenizer st = new StringTokenizer(ligne, "  ,.;: " );
  44.       System.out.println(ligne);
  45.       if (st.hasMoreTokens()) {
  46.        // motA contient [124542204] (exemple)
  47.        motA = st.nextToken();
  48.        if (st.hasMoreElements()) {
  49.         // mott contient CURREN
  50.         mott = st.nextToken();
  51.        }
  52.        if (st.hasMoreElements()) {
  53.         // mot1 contient soit "HOST" soit "SERVICE"
  54.         mot1 = st.nextToken();
  55.        }
  56.        if (st.hasMoreElements()) {
  57.         //  mot2 contient "STAT"
  58.         mot2 = st.nextToken();
  59.        }
  60.        if (st.hasMoreElements()) {
  61.         // le nom du host
  62.         mot3 = st.nextToken();
  63.        }
  64.        if (st.hasMoreElements()) {
  65.         // Ici si mot1= host alor mot4=etat(up or
  66.         // down)et si mot1=service alor mot4=nom de
  67.         // service
  68.         mot4 = st.nextToken();
  69.        }
  70.        if (st.hasMoreElements()) {
  71.         // ici si mot1= host alor mot4=hard ou soft
  72.         // et si mot1=service alor mot4=etat du
  73.         // service(ok,warning,critial,unknown)
  74.         mot5 = st.nextToken();
  75.        }
  76.        if (mot1.equals("host" )) {
  77.         if (mot3.equals(com)) {
  78.          if (mot4.equals("DOWN" )) {
  79.           try {
  80.            img = ImageIO.read(new File("c:/down.jpeg" ));
  81.           } catch (IOException e) {
  82.            e.printStackTrace();
  83.           }
  84.          } else if (mot4.equals("UP" )) {
  85.           try {
  86.            img = ImageIO.read(new File("c:/up.jpeg" ));
  87.           } catch (IOException e) {
  88.            e.printStackTrace();
  89.           }
  90.          }
  91.         } else // on peut avoir une hote est up
  92.           // mais elle a un service qui ne
  93.           // fonctionne pas
  94.         if (mot4.equals("UP" ) && (mot1.equals("SERVICE" )) && (mot3.equals("mot3" ))) {
  95.          if ((mot5.equals("CRITICAL" )) || (mot5.equals("UNKNOWN" ))
  96.            || (mot5.equals("WARNING" )))
  97.          {
  98.           try {
  99.            img = ImageIO.read(new File("c:/panne.jpeg" ));
  100.           } catch (IOException e) {
  101.            e.printStackTrace();
  102.           }
  103.          }
  104.         }
  105.        }
  106.       }
  107.      }
  108.     }
  109.    }
  110.   }
  111.   // fin.close();
  112.   fin1.close();
  113.  } catch (IOException e) {
  114.   System.out.println(e.getMessage());
  115.  }
  116. }
  117. }

Reply

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 :
  1. import java.awt.image.BufferedImage;
  2. import java.io.BufferedReader;
  3. import java.io.File;
  4. import java.io.FileReader;
  5. import java.io.IOException;
  6. import java.util.StringTokenizer;
  7. import javax.swing.JComponent;
  8. import javax.swing.JFrame;
  9. import javax.imageio.ImageIO;
  10. import java.awt.Graphics;
  11. import java.awt.Point;
  12. import java.awt.event.MouseEvent;
  13. import java.awt.event.MouseListener;
  14. import java.awt.image.BufferedImage;
  15. import java.awt.image.Raster;
  16. public class Machin extends JFrame {
  17.    private static final long    serialVersionUID    = 4983727800375272097L;
  18.   int g=0;
  19.   int id=0;
  20.   BufferedImage img = null;
  21.    public Machin(int id) {
  22.        this.id=id;
  23.        System.out.println(id);
  24.        setDefaultCloseOperation(EXIT_ON_CLOSE);
  25.        setSize(800, 600);
  26.        setLocationRelativeTo(null);
  27.  
  28.  
  29.  
  30.    }
  31. public void run()
  32. {
  33.       try {
  34.            img = ImageIO.read(new File("c:/pc.jpeg" ));
  35.        } catch (IOException e) {
  36.            e.printStackTrace();
  37.        }
  38.        setContentPane(new MyCanvas(img));
  39.        setVisible(true);
  40. }
  41.    public static void main(String[] args) {
  42.        int d=0;
  43.       Machin v= new Machin(d);
  44.       v.setVisible(true);
  45.       v.changeetat(d);
  46.    }
  47.  
  48.    private class MyCanvas extends JComponent implements MouseListener {
  49.  
  50.        private static final long    serialVersionUID    = 8845913940083986438L;
  51.  
  52.        private BufferedImage        buff                = null;
  53.  
  54.        private Raster                data                = null;
  55.  
  56.        public MyCanvas(BufferedImage img) {
  57.            this.addMouseListener(this);
  58.            this.buff = img;
  59.            this.data = img.getData();
  60.        }
  61.  
  62.        public void paintComponent(Graphics g) {
  63.  
  64.            g.drawImage(buff, 0, 0, buff.getWidth(), buff.getHeight(), this);
  65.        }
  66.  
  67.        private void testLocation(Point mouse, String text) {
  68.  
  69.            if(data.getBounds().contains(mouse))
  70.              {
  71.                  //Thread po=new Thread(new Interfacepc(id));
  72.                  System.out.println("image"+id);
  73.                  //po.start();
  74.                g++;
  75.                //po.setVisible(true);
  76.              }
  77.  
  78.  
  79.        }
  80.  
  81.        public void mouseClicked(MouseEvent e) {
  82.  
  83.            Point p = e.getPoint();
  84.            testLocation(p, "mouseClicked" );
  85.        }
  86.  
  87.        public void mousePressed(MouseEvent e) {
  88.  
  89.            Point p = e.getPoint();
  90.            testLocation(p, "mousePressed" );
  91.        }
  92.        public void mouseReleased(MouseEvent e) {
  93.  
  94.            Point p = e.getPoint();
  95.            testLocation(p, "mouseReleased" );
  96.        }
  97.  
  98.        public void mouseEntered(MouseEvent e) { }
  99.        public void mouseExited(MouseEvent e) { }
  100.  
  101.    }
  102.  
  103.  
  104. public void changeetat(int id) {
  105.  
  106.  String ligne, ligne1;
  107.  String motA = "";
  108.  String mot = "";
  109.  
  110.  String com = "";
  111.  String com1 = "";
  112.  
  113.  try {
  114.  
  115.   BufferedImage img = null;
  116.   // Le fichier test1 : fichier texte ou il y a
  117.   // La configuration de lhote c comme une basse de donnée
  118.  
  119.   BufferedReader fin1 = new BufferedReader(new FileReader("c:/Test.txt" ));
  120.  
  121.   while ((ligne1 = fin1.readLine()) != null) {
  122.    StringTokenizer st1 = new StringTokenizer(ligne1, "  ,.;: " );
  123.  
  124.    if (st1.hasMoreTokens()) {
  125.     mot = st1.nextToken();
  126.     if (mot.equals("host_name" ) && st1.hasMoreTokens()) {
  127.      com = st1.nextToken();
  128.      System.out.println(com);
  129.     }
  130.     ligne1 += ligne1 + "\n";
  131.     if (mot.equals("HOST_ID" ) && st1.hasMoreTokens()) {
  132.      com1 = st1.nextToken();
  133.      // le log file c est un fichier texte ou il y a l'etat
  134.      // des
  135.      // des hotes et des services
  136.      BufferedReader fin = new BufferedReader(new FileReader("c:/log.txt" ));
  137.  
  138.      while ((ligne = fin.readLine()) != null) {
  139.       String mott = "";
  140.       String mot1 = "";
  141.       String mot2 = "";
  142.       String mot3 = "";
  143.       String mot4 = "";
  144.       String mot5 = "";
  145.       StringTokenizer st = new StringTokenizer(ligne, "  ,.;: " );
  146.  
  147.       System.out.println(ligne);
  148.  
  149.       if (st.hasMoreTokens()) {
  150.        // motA contient [124542204] (exemple)
  151.       motA = st.nextToken();
  152.        if (st.hasMoreElements()) {
  153.        // mott contient CURREN
  154.         mott = st.nextToken();
  155.        }
  156.        if (st.hasMoreElements()) {
  157.         // mot1 contient soit "HOST" soit "SERVICE"
  158.         mot1 = st.nextToken();
  159.        }
  160.        if (st.hasMoreElements()) {
  161.         //  mot2 contient "STAT"
  162.         mot2 = st.nextToken();
  163.        }
  164.        if (st.hasMoreElements()) {
  165.         // le nom du host
  166.         mot3 = st.nextToken();
  167.        }
  168.        if (st.hasMoreElements()) {
  169.         // Ici si mot1= host alor mot4=etat(up or
  170.         // down)et si mot1=service alor mot4=nom de
  171.         // service
  172.         mot4 = st.nextToken();
  173.        }
  174.       if (st.hasMoreElements()) {
  175.         // ici si mot1= host alor mot4=hard ou soft
  176.         // et si mot1=service alor mot4=etat du
  177.         // service(ok,warning,critial,unknown)
  178.         mot5 = st.nextToken();
  179.        }
  180.  
  181.        if (mot1.equals("host" )) {
  182.         if (mot3.equals(com)) {
  183.          if (mot4.equals("DOWN" )) {
  184.           try {
  185.           img = ImageIO.read(new File("c:/down.jpeg" ));
  186.           } catch (IOException e) {
  187.            e.printStackTrace();
  188.           }
  189.  
  190.          } else if (mot4.equals("UP" )) {
  191.           try {
  192.            img = ImageIO.read(new File("c:/up.jpeg" ));
  193.           } catch (IOException e) {
  194.            e.printStackTrace();
  195.           }
  196.  
  197.         }
  198.  
  199.        } else // on peut avoir une hote est up
  200.           // mais elle a un service qui ne
  201.           // fonctionne pas
  202.         if (mot4.equals("UP" ) && (mot1.equals("SERVICE" )) && (mot3.equals("mot3" ))) {
  203.          if ((mot5.equals("CRITICAL" )) || (mot5.equals("UNKNOWN" ))
  204.            || (mot5.equals("WARNING" )))
  205.  
  206.          {
  207.           try {
  208.            img = ImageIO.read(new File("c:/panne.jpeg" ));
  209.           } catch (IOException e) {
  210.           e.printStackTrace();
  211.           }
  212.  
  213.          }
  214.         }
  215.  
  216.       }
  217.       }
  218.  
  219.     }
  220.     }
  221.    }
  222.   }
  223.  
  224.   // fin.close();
  225.  
  226.   fin1.close();
  227.  
  228.  } catch (IOException e) {
  229.   System.out.println(e.getMessage());
  230.  }
  231. }
  232. }


Message édité par touma10 le 10-06-2010 à 12:05:29
Reply

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

Reply

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 !!!

Reply

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!!!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed