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

Composants Java Discussion :

[JtoolBar]Problème de raffraichissement


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Par défaut [JtoolBar]Problème de raffraichissement
    Bonjour,

    J'ai une appli possédant, entre autre, une JToolBar. En fonction de là où on se trouve dans l'application, je voudraisajouter ou supprimer des icones dans cette JToolBar.
    Pour cela j'ai créé une classe héritant de JToolbar, à laquelle j'ai ajouté toutes les icones qui peuvent être affichées, en attribuant false à leur visibilité.

    Pour les réafficher, j'ai créé dans cette même classe, et pour chaque bouton, une méthodes afficherNomDuBouton() où je modifie la proprieté visible (que je passe donc à true) du bouton concerné. En fonction donc de où se trouve l'utilisateur, une classe appelle ces méthodes.

    Mon soucis est que les icones ne s'affichent pas dans ma JToolBar.

    Voilà quelques morceaux de code :

    class Toolbar:
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    public class ToolBar extends JToolBar implements ActionListener {
      private static ToolBar _instance;
      private BundleManager _bundle = BundleManager.getInstance();
      private JButton _retourButton, 
        		_suivantButton,
    		_contratButton,
    		_photoButton;
     
      private ToolBar() {
        setOpaque(false);
        init();
      }
     
      public static ToolBar getInstance() {
        if (_instance == null) _instance = new ToolBar();
          return _instance;
      }
     
      private void init() {
        //création des boutons
        _retourButton = new JButton();
        _suivantButton = new JButton();
        _contratButton = new JButton(); 
        _photoButton = new JButton();
     
        //initialisation des boutons
        initialiserBouton(_retourButton, Constantes.ICON_PRECEDENT);
        initialiserBouton(_suivantButton, Constantes.ICON_SUIVANT);
        initialiserBouton(_contratButton, Constantes.ICON_CONTRAT);
        initialiserBouton(_photoButton, Constantes.ICON_PHOTO);
     
        //ajout des boutons
        add(_retourButton);
        add(_suivantButton);
        add(_contratButton);
        add(_photoButton);
     
        //On cache les boutons
        _retourButton.setVisible(false);
        _suivantButton.setVisible(false);
        _cartoButton.setVisible(false);
        _photoButton.setVisible(false);
     
      }
     
      public void actionPerformed(ActionEvent e) {
          [...]
      }
     
      public void afficherBoutonPrecedent() {
        _retourButton.setEnabled(true);    
        _retourButton.setVisible(true);
      }
     
      public void afficherBoutonSuivant(boolean activer) {
        _suivantButton.setEnabled(true);
        _suivantButton.setVisible(true);
      }
     
      public void afficherBoutonContrat(){
        _contratButton.setEnabled(true);
        _contratButton.setVisible(true);
      }
     
      public void afficherBoutonPhoto(){
        _photoButton.setEnabled(true);
        _photoButton.setVisible(true);
      }
     
      private void initialiserBouton(JButton bouton, Icon iconeActif) {
        //les icônes
        bouton.setIcon(iconeActif);
        bouton.setText(null);
        bouton.setMargin(new Insets(0, 0, 0, 0));
     
        //les listeners
        bouton.addActionListener(this);
     
        //désactiver les boutons
        bouton.setEnabled(false);
     
        bouton.setBorderPainted(false);
        bouton.setIconTextGap(10);
      }    
    }
    Un exemple d'appel d'affichage de bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ToolBar.getInstance().afficherBoutonContrat();

    Une idée du problème?

    Merci.

  2. #2
    Membre expérimenté Avatar de Torg666
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 230
    Par défaut
    Pour ton souci de rafraichissement, il faut peut etre faire un repaint ou quelque chose du genre sur ta jtoolbar.

    Autre chose, pour gerer tes boutons:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ...
    private JButton boutonToto;
    ...
     
    public void afficherBoutonToto(boolean etat){
    boutonToto.setEnabled(etat);
    boutonToto.setVisible(etat);
    }
    Ainsi en faisant this.afficherBoutonToto(false), tu desactive boutonToto et true tu l'active.
    Y a encore plus generique comme fonction genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void afficherBouton(JButton bouton, boolean etat){
    bouton.setEnabled(etat);
    bouton.setvisible(etat);
    }

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Par défaut
    Recréer une classe pour mes JButtons engendrerait trop de modifications, je préfére donc rester sur cette configuration.
    en ce qui concerne, la modification de la méthode, l faudrait donc que je recréé autant de méthode getNomduBouton() pour pouvoir faire dans une autre classe mon afficherBouton(JButton bouton, boolean visible). Donc là aussi je préfere ne rien changer
    Par contre j'avais déjà testé d'ajouter un repaint() et un revalidate() dans mes fonctions afficherBoutonNomduBouton() mais cela n'a rien changé.

    Sinon j'ai aussi tenté de passer mes bouton en static pour pouvoir y accéder directement depuis d'autre classe, mais le problème subsiste toujours

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,



    Je n'arrive pas à reproduire ton problème...

    Es-tu sûr que tes icônes sont bien chargées ? Car sinon tes boutons sont bien visible mais sans aucun contenu ! (rajoute un texte pour vérifier cela).

    a++

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Par défaut
    Autre remarque.
    Mes boutons _retourButton et _suivantButton sont en fait des boutons qui sont tout le temps affichés (comprenez par là que je ne fais pas de _retourButton.setVisible(false) ni de _suivantButton(false)).
    Si, par exemple, dans ma fonction afficherBoutonContrat() j'ajoute un _retourButton.setVisible(false) (avant ou à la suite des ), mon bouton contrat s'affiche correctement

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Par défaut
    C'est bon j'ai trouvé
    J'avais un setPreferredSize() qui trainait dans le code

    Merci à vous deux pour votre aide.

  7. #7
    Membre expérimenté Avatar de Torg666
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 230
    Par défaut
    Ce que je voulais dire c'est que tu aurai pu faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ToolBar.getInstance().afficherBouton(_contratButton,true);
    au lieu de ce que tu fais actuellement, ca te fais une seule fonction pour gerer tous tes boutons au lieu de 1 voir 2 par bouton.... mais enfin bon je chipote peut etre un peu, que veux-tu, moi je m'économise quand je le peut

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

Discussions similaires

  1. Probléme de raffraichissement sous formulaire access
    Par roadster62 dans le forum Access
    Réponses: 4
    Dernier message: 27/03/2006, 16h44
  2. Problème de raffraichissement.
    Par kurul1 dans le forum OpenGL
    Réponses: 6
    Dernier message: 06/02/2006, 16h46
  3. Réponses: 9
    Dernier message: 26/01/2006, 20h33
  4. Problème de raffraichissement de listes
    Par blondin01 dans le forum Access
    Réponses: 7
    Dernier message: 13/10/2005, 12h31
  5. [awt] Problème de raffraichissement de composant
    Par FakuFaku dans le forum AWT/Swing
    Réponses: 13
    Dernier message: 21/07/2005, 18h32

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