IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Programmation sur PDA: pb d'affichage d'image


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 11
    Par défaut Programmation sur PDA: pb d'affichage d'image
    Bonjour a tous,
    je programme une application sur PDA en awt, et je dois afficher un plan de carte apres une multitude de calcul. J'ai bien sur prévu qu'il affiche une image "Hors_zone" au cas ou il n'existerait pas de carte.
    Le problème qui survient est que les cartes ne s'affichent pas du tout. Mon test de carte se faisant sur la taille de l'image (si == -1 alors affiche "hors_zone"), il m'affiche que mes images hors_zone. Voici le bout de code en question. Je tien à dire de plus que les images de carte et celle hors_zone ce trouve dans le même répertoire. c'est donc inconpréhensible.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    Image ImageVide = getToolkit().getImage("Ville/image/Hors_zone.JPG");
    ObjetDessinable t; 
    String filename;
    Image img;
    int X, Y;
    int PositionCanX, PositionCanY;
     
    if(centre){ // quand on ne se déplace pas sur la carte avec le stylet
     
        listimg.clear(); //efface la memoire des Tuiles, pour ne pas rajouter à l'Arraylist
     
    /****  enregistre toutes les Tuiles  *****/
     
        for(int i=-1;i<=1;i++){  //ligne
                     X = IndiceTuileX + i;
            for(int j=-1; j<=1;j++){  //colonne
                Y = IndiceTuileY + j;        
                filename="tile_&x="+X+"&y="+Y+".JPG"; 
     
                img = getToolkit().getImage(filename);    
     
                PositionCanX = (int)((i+(nb_image/2))*TailleImageX) - decalX; 
                PositionCanY = (int)((j+(nb_image/2))*TailleImageY) - decalY; 
     
                if (img.getWidth(this) == -1 || img.getHeight(this) == -1) {
                    t = new Tuiles(ImageVide, PositionCanX, PositionCanY);
                }else{
                    t = new Tuiles(img, PositionCanX, PositionCanY);
                }
                listimg.add(t);    
            }
        }
    ...
    }
    je tiens a signaler que cela fonctionne sur PC.

  2. #2
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 83
    Par défaut
    Es tu certain que la JVM de ton PDA accepte getToolkit ?

  3. #3
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 11
    Par défaut
    j'utilise MySaifu.
    J'avais déja effectué une application ou j'utilisais un canvas pour faire un bouton. qaund la souris passé sur le canvas l'image changer. Ca donner un effet appuyé (ToggleButton je crois) Au moins je pouvais choisir l'image que je voulais pour faire ca. Une sorte d'icone.
    Ce que j'ai du mal a comprendre c'est que sur l'application ca fonctionnait alors que la, non.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    Quand tu ecris "Image image=getToolkit.getImage()" tu crees une image sans la decompresser.
    Ca veut dire qu'a ce moment la, tu ne connais pas la taille de l'image.
    L'appel a image.getWidth(this) lance la decompression, et te retourne -1 puisque l'info n'est pas encore dispo (cf javadoc).
    Tu seras notifié (via l'ImageObserver passé en parametre de getWidth) quand l'info est dispo.

    Si tu veux avoir l'info a coup sur :
    - soit tu utilises un MediaTracker, pour forcer la decompression de l'image.
    - soit tu geres les notifications via l'ImageObserver (mais c'est plus compliqué).

  5. #5
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 11
    Par défaut
    Merci pour ton explication.
    Je vais me renseigner sur les Mediatracker. je n'ai jamais eu recours pour l'instant. j'espère que ca marchera.
    Comment je peux faire pour qu'elle soit décompressée directement?

  6. #6
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 11
    Par défaut
    Le truc c'est que moi je n'utilise pas d'applet.
    en fait comme vous avez pu le remarquer j'utilise une arraylist ou je vais mettre mes 9 images. ensuite je cast mon arraylist en mon objet que j'ai creer et je fais la méthodes interne "dessine" de mon objet pour l'afficher a l'écran.
    Le code du dessus se trouve dans une méthode de ma classe principale.
    Je ne vois pas ou je peux placer mon mediatracker pour ajouter les éléments et apres pour pouvoir les afficher en prenant en compte le MediaTracker

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    Tu peux ecrire du code du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
                    ...
    	 	MediaTracker tracker = new MediaTracker(new Component() {});
    		for (int i = -1; i <= 1; i++) { // ligne
    			X = IndiceTuileX + i;
    			for (int j = -1; j <= 1; j++) { // colonne
    				Y = IndiceTuileY + j;
    				filename = "tile_&x=" + X + "&y=" + Y + ".JPG";
     
    				img = Toolkit.getDefaultToolkit().getImage(filename);
     
    				int index = (i+1)*3+(j+1);
    				tracker.addImage(img, index);												
    			}
    		}
     
    		try {
    			tracker.waitForAll();
    		} catch (InterruptedException e) {
    			e.printStackTrace();
    		}
    Je ne pense pas que tu y aies acces sur PDA, mais il y a aussi javax.imageio.ImageIO.read, qui permet de charger de facon synchrone une image.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/10/2010, 10h43
  2. Premier programme sur PDA, PocketPC, SmartPhone
    Par hfranck dans le forum Windows Forms
    Réponses: 28
    Dernier message: 06/10/2009, 15h01
  3. [WebForms] Repeater (affichage d'images sur 2 colonnes)
    Par codez dans le forum Général Dotnet
    Réponses: 6
    Dernier message: 21/03/2007, 10h11
  4. Réponses: 3
    Dernier message: 14/04/2006, 09h32
  5. Affichage d'images sur une page
    Par barthelv dans le forum Langage
    Réponses: 3
    Dernier message: 19/12/2005, 17h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo