[JAVA] Images et Applications

Images et Applications [JAVA] - Programmation

Marsh Posté le 15-02-2002 à 10:15:21    

Salut !
J'ai décomposé une appli en une classe contenant mon main et des fonctions, une GUI et une classe pour les ActionListener.
Je voudrais afficher des images dans ma GUI. J'ai fait comme pour une applet (à part que j'utilise getToolkit() etc...) et une méthode paint. Mais ça marches pas :(
J'ai un autre truc bizarre, quand j'utilise g.drawString("...",
la ligne n'apparaît qu'une fois sur deux dans ma GUI !?
Une idée ?
Si vous avez un tut qui explique bien ça pour les APPLICATIONS et non les applets, ça m'interesse aussi ...
D'avance merci !
A+
Fafix

Reply

Marsh Posté le 15-02-2002 à 10:15:21   

Reply

Marsh Posté le 15-02-2002 à 10:59:10    

montre ton code


---------------
Je ne suis ni pour, ni contre, bien au contraire  
Reply

Marsh Posté le 15-02-2002 à 12:30:21    

En fait, mon pb se cache là:
 
import java.awt.*;
import java.awt.event.*;
 
public class Temp extends Frame {
 Image monImage;
 int iNumIm = 15;
 int iLargIm = 0;
 int iHautIm = 0;
 
 MediaTracker monTracker = new MediaTracker(this);
 
 public static void main(String args[]) {
  Temp aa = new Temp("fond.gif" );
 }
 
 public Temp(String strName) {
  enableEvents(WindowEvent.WINDOW_CLOSING);
   
  monImage = getToolkit().getImage(strName);
   
  monTracker.addImage(monImage,1);
  try {
   monTracker.waitForID(1);
  } catch (InterruptedException e) {
   System.err.println("Erreur: "+e);
  }
   
  setSize(monImage.getWidth(this), monImage.getHeight(this));
   
  show();
 }
 
 public void paint(Graphics g) {
  g.drawImage(monImage,0,0,600,600,this);
 }
 
 protected void processWindowEvent(WindowEvent evt) {
  if (WindowEvent.WINDOW_CLOSING == evt.getID())
  System.exit(0);
 }
}

Reply

Marsh Posté le 15-02-2002 à 12:48:17    

Essaie de remplacer  
getToolkit().getImage(strName);  
 
part Toolki.getDefaultToolkit().getImage(strName);
 
pour voir...

Reply

Marsh Posté le 15-02-2002 à 12:56:02    

Pendant ce temps, je cherche dans mes bouts de code.


---------------
Le site de ma maman
Reply

Marsh Posté le 15-02-2002 à 13:14:01    

J'ai essayé et c'est pareil...
 
J'espère que cela ne vient pas de l'endroit ou placer le .gif ?
Je l'ai mis dans le même rép que les classe... (et par précaution, dans le rép de mon projet, créé sous JCreator)

Reply

Marsh Posté le 15-02-2002 à 13:20:41    

non, non, ca c'est bon


---------------
Je ne suis ni pour, ni contre, bien au contraire  
Reply

Marsh Posté le 15-02-2002 à 14:36:25    

Ben, ça dépend!!  
Si tu lances ton java Maclass.class depuis l'endroit où il y a tes classes, pas de problème, sinon, ça va pas marcher: mais bon, si il trouvaut pas ton fichier, tu aurais sans doute une exception à la con....

Reply

Marsh Posté le 15-02-2002 à 14:43:07    

je ne sais si cela peut t'aider mais  c'est  comme cela que j'affiche une image et demande le rafraichissement
 
getContentPane().removeAll();
            getContentPane().setBackground(Color.white);            
            ImageIcon spikeImage = new ImageIcon(ResourceLoader.getResource("liste.Animations","images\\spike.gif" ));                    
            JLabel jLabel = new JLabel(spikeImage , JLabel.CENTER);                        
            getContentPane().add(jLabel);        
            getContentPane().validate();
            getContentPane().repaint();                        
 
-----------------------
-----------------------
-----------------------
import java.net.*;
 
class ResourceLoader {
    public static URL getResource(String classe, String path)  
    {
 try  
        {
  URL url = Class.forName(classe).getResource(path);
  return url;
 }
        catch (Exception e)  
        {
  System.out.println("Erreur chargement de ressource : path ==> " + path + " / classe ==> " + classe + " / " + e);
  return null;
 }
    }
}

Reply

Marsh Posté le 15-02-2002 à 14:43:49    

Bon y a plusieurs pb :
 - je crois que si tu ne definit pas de layout pour gerer les composants de ta fenetre, toutes tes coordonnees sont relatives a l'ecran(!).
Donc ton point de depart 0,0 fait reference au coin haut gauche de l'ecran(!!).
 - deuxieme pb : tu met le show() dans ton constructeur !! -> met le a la fin du main.
 
Bon y a encore d'autre petit truc, je te balance un code remanie qui marche chez moi(par contre tu risque de devoir changer la taille ou le point de depart de l'image).
 
 
import java.awt.*;  
import java.awt.event.*;  
 
public class Temp extends Frame {  
    Image monImage;  
    int iNumIm = 15;  
    int iLargIm = 0;  
    int iHautIm = 0;  
     
    MediaTracker monTracker = new MediaTracker(this);  
     
    public static void main(String args[]) {  
 Temp aa = new Temp("IMG0000049.gif" );  
 aa.show() ;
    }  
                                 
    public Temp(String strName) {  
 super() ;
 enableEvents(WindowEvent.WINDOW_CLOSING);  
 
 monImage = getToolkit().getImage(strName);  
 
 /*monTracker.addImage(monImage,1);  
 try {  
     monTracker.waitForID(1);  
 } catch (InterruptedException e) {  
     System.err.println("Erreur: "+e);  
 }  
 */
 this.setSize(1200,1200);  
 
 //show();  
    }  
     
    public void paint(Graphics g) {  
 Image buffer=this.createImage(1,1) ;
 buffer.getGraphics().drawImage(this.monImage,0,0,this) ;
 g.drawImage(monImage,0,0,600,600,this);  
    }  
     
    protected void processWindowEvent(WindowEvent evt) {  
 if (WindowEvent.WINDOW_CLOSING == evt.getID())  
     System.exit(0);  
    }  
}

Reply

Marsh Posté le 15-02-2002 à 14:43:49   

Reply

Marsh Posté le 15-02-2002 à 15:00:35    

Merci !

Reply

Sujets relatifs:

Leave a Replay

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