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 :

[Swing] Images différentes dans un JTree


Sujet :

Composants Java

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut [Swing] Images différentes dans un JTree
    Bonjour,

    encore une question d'IHM qui n'est pas ma tasse de thé. J'ai regardé la doc de sun et quelques tutoriaux là-dessus mais je n'arrive pas poour le moment à faire ce qui est décrit ci-après :
    : je voudrais pourvoir associer une image différente à chaque noeud principal de mon JTree. J'entends par noeud principal les fils du root (LAUNCHER) uniquement cad DEVICE, INTERFACERULE, PERSON, GROUP, SMTPSERVER, RULE (cf code joint). J'ai réussi à associer une image mais c'est la même sur chaque noeud noeud et on vu que l'on travaille sur le JTree pour celà et non sur le NodeTree je ne vois pas trop comment faire. Faut-il que je redéfinisse une classe héritant de DefaultTreeCellRenderer :

    Merci d'avance pour vos réponses toujours très instructives.

    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
    	public static DefaultMutableTreeNode dmt = new DefaultMutableTreeNode("LAUNCHER");
    	public static DefaultMutableTreeNode dmtDevice = new DefaultMutableTreeNode("DEVICE");
    	public static DefaultMutableTreeNode dmtInterfaceRule = new DefaultMutableTreeNode("INTERFACERULE");
    	public static DefaultMutableTreeNode dmtPerson = new DefaultMutableTreeNode("PERSON");
    	public static DefaultMutableTreeNode dmtGroup = new DefaultMutableTreeNode("GROUP");
    	public static DefaultMutableTreeNode dmtSmtpServer = new DefaultMutableTreeNode("SMTPSERVER");
    	public static DefaultMutableTreeNode dmtRule = new DefaultMutableTreeNode("RULE");
    	public static DefaultTreeModel treeModel;
    	public static JTree jt;
     
    ...............................
    ...............................
     
    	      dmt.add(dmtDevice);
    	      dmt.add(dmtInterfaceRule);
    	      dmt.add(dmtPerson);
    	      dmt.add(dmtGroup);
    	      dmt.add(dmtSmtpServer);
    	      dmt.add(dmtRule);
     
    	      treeModel = new DefaultTreeModel(dmt);
    	      jt = new JTree(treeModel);
    	      ImageIcon OpenIcon = new ImageIcon("modem.jpg");
    	      if (OpenIcon != null) {
    	          DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();
    	          renderer.setClosedIcon(OpenIcon);
    	          renderer.setOpenIcon(OpenIcon);
     
    	          jt.setCellRenderer(renderer);
    	      }
    PS:je ne mets pas tout le code, ne vous inquiétez pas le reste ne pose pas de problème.

  2. #2
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Et oui, il va bien falloir redéfinir DefaultTreeCellRenderer pour un opération comme celle-ci...
    Je crois qu'il te faudra redéfinir la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public Component getTreeCellRendererComponent(JTree tree, Object value,
    			boolean sel, boolean expanded, boolean leaf, int row,
    			boolean hasFocus){
    }
    Où dedans tu mettras tes tests qui te permettront de définir tes icônes...

    +++
    Ju

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut
    Merci c'est malheureusement bien ce qu'il me semblait

  4. #4
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut
    voilà la ligne que j'ai rajouté dans mon code principal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jt.setCellRenderer(new MyRenderer("ic_regle_launch.gif","ic_modem2.gif","ic_interfacerule.gif","ic_smtpserver2.gif","ic_utilisateur4.gif","ic_utilisateur.gif","ic_regle2.gif"));
    et la classe que j'ai créé :
    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
     
    package myWindow;
     
    import java.awt.Component;
     
    import javax.swing.ImageIcon;
    import javax.swing.JTree;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.tree.DefaultTreeCellRenderer;
     
    public class MyRenderer extends DefaultTreeCellRenderer {
     
     
    	private static final long serialVersionUID = -3991603773928897980L;
    	private ImageIcon launcher;
    	private ImageIcon device;
    	private ImageIcon interfaceRule;
    	private ImageIcon smtpServer;
    	private ImageIcon group;
    	private ImageIcon person;
    	private ImageIcon rule;
     
    public MyRenderer(String l, String d, String ir, String ss, String g, String p, String r) {
    	launcher = new ImageIcon(l);
    	device = new ImageIcon(d);
    	interfaceRule = new ImageIcon(ir);
    	smtpServer = new ImageIcon(ss);
    	group = new ImageIcon(g);
    	person = new ImageIcon(p);
    	rule = new ImageIcon(r);
    }
     
    public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
        super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
     
        DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
     
        String nodeInfo = (String)(node.getUserObject());
     
        if (nodeInfo.equals("DEVICE")) {
        	setIcon(device);
        } else if (nodeInfo.equals("INTERFACERULE")) {
        	setIcon(interfaceRule);
        } else if (nodeInfo.equals("GROUP")) {
        	setIcon(group);
        } else if (nodeInfo.equals("PERSON")) {
        	setIcon(person);
        } else if (nodeInfo.equals("RULE")) {
        	setIcon(rule);
        } else if (nodeInfo.equals("SMTPSERVER")) {
        	setIcon(smtpServer);
        } else if (nodeInfo.equals("LAUNCHER")) {
        	setIcon(launcher);
        }
     
        return this;
    }
    }
    voilà si ça peux aider d'autres personnes tant mieux !!!

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 01/06/2012, 10h49
  2. images diffrentes dans l' infobulle
    Par lloyd450 dans le forum APIs Google
    Réponses: 0
    Dernier message: 22/03/2012, 16h05
  3. Afficher des images dans un JTree
    Par sinsay69 dans le forum Composants
    Réponses: 1
    Dernier message: 13/03/2012, 11h40
  4. Réponses: 5
    Dernier message: 06/06/2010, 20h34
  5. image tif dans interface g avec swing
    Par Papipen dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 09/06/2009, 05h14

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