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

 Java Discussion :

Configurer un setToolTipText


Sujet :

Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 21
    Par défaut Configurer un setToolTipText
    Bonjour,

    Lorsque je passe ma souris sur une affiche de cinéma, j'affiche le titre, le genre et l'année du film que représente l'affiche. Pour cela, j'utilise setToolTipText associé à une iconeImage. Cela marche, mais je n'arrive pas à modifier le rendu de l'infobulle en mettant l'info sur 3 lignes ("\n" ne marche pas) ou en mettant en gras.

    Le code de mon objet film :

    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
     
    public class film 
    {
    		private String titre;
    		private int annee;
    		private String genre;
    		private String lien;
    		private ImageIcon affiche;
     
    		public film (String titre,int annee,String genre,String lien,ImageIcon affiche)
    		{
    			this.titre = titre;
    			this.annee = annee;
    			this.genre = genre;
    			this.lien = lien;
    			this.affiche = affiche;
    		}
     
    		public film getfilm(){return this;}
    		public ImageIcon getaffiche(){return this.affiche;}
     
    		public String getinfo()
    		{
    		String mes = "Titre: " + this.titre + " - " + "Genre: " + this.genre + " - " + "Année: " + this.annee;
    		return mes;
    		}
    }
    Le code de ma BDD :

    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
     
     
    public class videotheque
    {
    	private ArrayList<film> films;
     
    	public videotheque ()
    	{
    		films = new ArrayList<film>();
    	}
     
    	public void init()
    	{
    		String path= "C:\\Users\\Gab et Pat\\Desktop\\Pat\\Java\\bibliovd\\src\\biblio\\affiches\\"; 
     
    		films.add(new film ("4 minutes",2013,"comedie","lien", new ImageIcon (path + "4 minutes.jpg")));
    		films.add(new film ("7 vies",2013,"comedie","lien", new ImageIcon (path + "7 vies.jpg")));
     
    	}
     
    	public film getFilm(int i)
    	{
    		return films.get(i);
    	}
    }
    Le code du rendu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    JPanel disposition = new JPanel(new GridLayout(4,3,1,1));
    for (int i=0; i<12; i++)
    {
           	imagePanel = new JLabel();
     
           	film monFilm = maVideo.getFilm(i);
     
            imagePanel.setToolTipText(monFilm.getinfo());
            imagePanel.setIcon(monFilm.getaffiche());
            disposition.add(imagePanel);
    }
    Je souhaite donc modifier le rendu de : imagePanel.setToolTipText(monFilm.getinfo());

    Je vous remercie.

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Tu peux utiliser du HTML dans tes tooltips à cet effet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JLabel label = new JLabel("label");
    label.setToolTipText("<html>First line<br>Second Line</html>");

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 21
    Par défaut
    Bonjour sinok,

    Merci d'avoir répondu.

    J'essaie ta solution. J'ai peur que entre les balises htlm il n'y ai que la possibilité d'afficher une chaine de caractère, alors que moi je souhaite afficher le résultat d'une méthode sur un objet : monFilm.getinfo()

    enfin, je regarde si je peux m'en sortir.

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    En même temps, html ou pas, le tooltips ne font qu'afficher une chaîne.

    Donc, tu as juste à faire en sorte que ta méthode renvoie du HTML.

    Ou alors faire une classe s'occupant de transformer un film en chaîne HTML.

    Il suffit de modifier ta classe Film pour qu'elle contienne des getters.

    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
    package swing.tooltip;
     
    import javax.swing.ImageIcon;
     
    public class Film {
        private String titre;
        private int annee;
        private String genre;
        private String lien;
        private ImageIcon affiche;
     
        public Film(String titre, int annee, String genre, String lien,
                ImageIcon affiche) {
            this.titre = titre;
            this.annee = annee;
            this.genre = genre;
            this.lien = lien;
            this.affiche = affiche;
        }
     
        public String getTitre() {
            return titre;
        }
     
        public int getAnnee() {
            return annee;
        }
     
        public String getGenre() {
            return genre;
        }
     
        public String getLien() {
            return lien;
        }
     
        public ImageIcon getAffiche() {
            return affiche;
        }
     
        public Film getfilm() {
            return this;
        }
     
        public String getinfo() {
            String mes = "Titre: " + this.titre + " - " + "Genre: " + this.genre
                    + " - " + "Année: " + this.annee;
            return mes;
        }
     
    }
    Puis de créer une classe s'occupant de générer le HTML (avec du MessageFormat pour que ce soit propre).

    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
    package swing.tooltip;
     
    import java.text.MessageFormat;
     
    public class FilmHTMLRender {
     
        private Film film;
     
        public FilmHTMLRender(Film film) {
            this.film = film;
        }
     
        public String render() {
            String tooltipContent = "<html>Titre: {0}<br>Genre: {1}<br>Année: {2}</html>";
            return MessageFormat.format(tooltipContent, film.getTitre(),
                    film.getGenre(), film.getAnnee());
        }
     
        public static void main(String[] args) {
            Film f = new Film("Dora strikes back, and she is fucking angry", 2054,
                    "Gore", null, null);
            System.out.println(new FilmHTMLRender(f).render());
     
        }
    }

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 21
    Par défaut
    Merci beaucoup.

    Cela marche parfaitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public String getinfo()
    {
    	String mes = "<html><B>Titre: </B>"+this.gettitre()+"<br><B>Genre: </B>"+this.getgenre()+"<br><B>Annee: </B>"+this.getannee()+"</html>";
    	return mes;
    }

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    En général, il est préférable d'éviter de mélanger données et forme. Ton bean Film ne devrait contenir que la partie donnée, et la mise en forme devrait être déléguée à une autre classe.

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

Discussions similaires

  1. configurer sql pour envoyer des mails
    Par arwen dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 29/07/2003, 15h28
  2. [postgresql]configuration serveur
    Par Fyna dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 16/06/2003, 19h22
  3. [configuration] lancer plusieurs serveurs Tomcat
    Par polo54 dans le forum JBuilder
    Réponses: 4
    Dernier message: 13/06/2003, 15h52
  4. Configurer OpenGL/Glut avec C++Bluider
    Par MiGoN dans le forum OpenGL
    Réponses: 2
    Dernier message: 13/09/2002, 23h18
  5. BDE : Configurer automatiquement le NETDIR
    Par Harry dans le forum Paradox
    Réponses: 10
    Dernier message: 29/07/2002, 11h33

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