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

Interfaces Graphiques en Java Discussion :

Charger une seule fois les ressources image pour contrôle graphique


Sujet :

Interfaces Graphiques en Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Charger une seule fois les ressources image pour contrôle graphique
    Bonjour,

    Je développe une application Java avec une IHM constituée d’éléments graphiques (boutons, textes, combobox, ...).

    Les éléments graphiques sont des JPanel contenant des images ou du texte.
    par exemple:

    un bouton contient un texte et 4 images correspondant à ses 4 états (normal, disabled, focus, pushed)
    Lors de la création du bouton, la classe MyButton (extends JPanel) viens charger en mémoire les différentes images.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class MyButton extends JPanel
    {
      public MyButton()
      {
         m_imgNormal = new BufferedImage("normal.png");
         m_imgDisabled = new BufferedImage("disabled.png");
         m_imgFocused = new BufferedImage("focused.png");
         m_imgPushed = new BufferedImage("pushed.png");
      }
    }


    Est-il possible d'aller chercher toujours la même zone mémoire pour plusieurs boutons?

    Une IHM qui contient 100 boutons utilise 400 images. Est-il possible de charger les 4 images qu'une seule fois pour les 100 boutons?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class MyIHM extends JPanel
    {
      MyButton[] m_arrayButton = new MyButton[100];
     
    }
    Merci de votre aide.

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Mieux vaudrait fournir un service qui charge les images une fois et une seule, service sur lequel s'appuie tes boutons.

    Genre un singleton qui contiendra l'ensemble des images nécessaires dans une HashMap et qui proposera une méthode basée sur une clef pour récupérer telle ou telle image.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Merci pour l'aide,

    Avez vous des exemples de ce genre de mécanisme?

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  5. #5
    Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut HashMap
    Bonjour,

    Le plus simple est de créer une hashmap static dans une class. example


    Hashmap<String,BufferedImage> mesImages = new Hashmap<String,BufferedImage>();

    et pour ajouter tes images tu fais

    -mesImages.put("m_imgNormal",new BufferedImage("normal.png")) ;

    et pour récupérer une image tu fais appel a cette fonction avec un cast

    (BufferedImage) mesImages.get("m_imgNormal");

Discussions similaires

  1. [MySQL] afficher une seule fois les données redondantes
    Par ginger4957 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 20/05/2009, 16h04
  2. Réponses: 4
    Dernier message: 06/06/2008, 10h56
  3. [MySQL] afficher une seule fois les réponses identiques
    Par Giantrick dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/05/2007, 12h35
  4. [XSLT] Afficher une seule fois les attributs redondants...
    Par kobe dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 17/11/2005, 09h52
  5. Réponses: 18
    Dernier message: 10/02/2005, 13h22

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