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 :

Modifier la dimension d'un tooltip


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 72
    Par défaut Modifier la dimension d'un tooltip
    Bonjour à tous,

    je cherche à modifier la dimension de mon tooltip car à l'affichage il "déborde" de mon application.

    J'ai surchargé la méthode createTooltip, mais la taille reste inchangée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    /**
       * {@inheritDoc}
       */
      @Override
      public JToolTip createToolTip()
      {
        JToolTip tooltip = new JToolTip();
        tooltip.setMaximumSize(new Dimension(200, 200));
        tooltip.setPreferredSize(new Dimension(200, 200));
        tooltip.repaint();
        return tooltip;
      }
    Quelqu'un aurait une idée?

  2. #2
    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,



    Déjà le repaint() est inutile (le composant n'est pas encore affiché, donc inutile de le redessiner). Ensuite il faudrait associer le Tooltip à ton composant (ou utiliser super.createToolTip() pour créer le tooltip au lieu de faire un new JToolTip()).


    Mais... ton code marche !!!

    Il faudrait que tu détailles ta configuration (version de Java, système d'eploitation, LookAndFeel utilisé, ...) et que tu donnes un code minimal compilable qui reproduise le problème.



    a++

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 72
    Par défaut
    Bon si mon code doit fonctionner c'est déjà ça, cela dit à l'heure actuel j'ai un tooltip qui fait la largeur de mon écran et donc qui est tronqué car le tip text est plus grand que la largeur de l'écran (1280*1024).

    Je travaille en Java 6, sous XP.

    J'ai oublié de préciser que je travaille sur une cellule de JTable
    Coté code j'ai 2 renderers:
    • Un renderer par defaut pour les labels de cellules dans lequel je surcharge la méthode createTooltip
      Il étend JLabel et implémente TableCellRenderer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /**
       * {@inheritDoc}
       */
      @Override
      public JToolTip createToolTip()
      {
        JToolTip tooltip = super.createToolTip();
        tooltip.setMaximumSize(new Dimension(200, 200));
        tooltip.setPreferredSize(new Dimension(200, 200));
        return tooltip;
      }
    • Un renderer pour le texte de ma cellule qui étend le 1er
      C'est dans celui là que je créé le tooltip
      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
       
          String textToprocess = "TRES LONGUE CHAINE DE CARACTERES ...";
          FontMetrics fontMetrics = getFontMetrics(getFont());
          if (!StringUtil.isEmptyString(textToprocess))
          {
            int cellWidth = table.getCellRect(row, column, false).width;
            cellWidth -= getBorderMargin();
            if (fontMetrics.stringWidth(textToprocess) > cellWidth)
            {
              setToolTipText(textToprocess);
            }
            else
            {
              setToolTipText(null);
            }
           }


    Quelqu'un a une idée?

  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
    Citation Envoyé par Goupsy Voir le message
    J'ai oublié de préciser que je travaille sur une cellule de JTable
    Coté code j'ai 2 renderers:
    Tu as ta réponse ! Les renderers des JTables ne sont pas de vrais composant, dans le sens où il ne sont pas réellement ajouté à la fenêtre comme de vrai composant. Pour des raisons de performance c'est la JTable qui simule cela.

    Du coup ta méthode createTooltip() n'est jamais appelée. C'est celle de la classe JTable qui est utilisée !


    Citation Envoyé par Goupsy Voir le message
    Un renderer par defaut pour les labels de cellules dans lequel je surcharge la méthode createTooltip
    Il étend JLabel et implémente TableCellRenderer
    Un conseil : hérites directement de DefaultTableCellRenderer (quitte à modifier son apparence dans le constructeur). Cette classe hérite aussi de JLabel mais elle réimplémente une série de méthode pour des raisons de performances...


    a++

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 72
    Par défaut
    Merci adiGuba,

    il faut donc que je surcharge la méthode dans la bonne table! Je m'explique: J'ai ma table qui hérite d'une table parente, qui hérite elle-même d'un JPanel.

    J'ai essayé de redéfinir createTooltip dans ma table, mais ça n'a pas fonctionné...

    Merci aussi pour le conseil!

  6. #6
    lvr
    lvr est déconnecté
    Membre éclairé Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    919
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 919
    Par défaut
    Salut Goupsy,
    T'as résolu ton problème ?
    Je voudrais aussi vers des tooltips spécifiques pour une colonne.
    As-tu essayer de surcharger la méthode public String getToolTipText(MouseEvent event) de ta table ?

Discussions similaires

  1. Modifier les dimensions d'une image insérée (jpg)
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 47
    Dernier message: 21/08/2008, 08h47
  2. [POO] Modifier les dimensions d'une scene flash en Javascript
    Par Peyothe dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 20/06/2008, 11h19
  3. Réponses: 6
    Dernier message: 17/06/2008, 12h55
  4. Modifier les dimensions d'une image
    Par LoicH dans le forum C++Builder
    Réponses: 3
    Dernier message: 29/10/2007, 22h53
  5. Réponses: 1
    Dernier message: 13/03/2007, 15h31

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