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 :

[JTree] Problème d'action listener


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 29
    Par défaut [JTree] Problème d'action listener
    Bonjour

    Je souhaite dans un JTree afficher en plus du label classique du renderer un bouton. Mon probleme c'est que le bouton n'est pas cliquable.

    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
     
    DefaultTreeCellRenderer treeCellRender = new DefaultTreeCellRenderer(){
     
    			@Override
    			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);
     
    				Object userObject = ((DefaultMutableTreeNode) value).getUserObject();
     
    				if (value == root){
    					JPanel panel = new JPanel();
    					panel.setOpaque(false);
    					panel.add(this);
    					JButton button = new JButton(IconManager.QUESTION_MARK);
    					button.setContentAreaFilled(false);
    					button.setBorderPainted(false);
    					button.setMaximumSize(new Dimension(16,16));
    					button.setMinimumSize(new Dimension(16,16));
    					button.setPreferredSize(new Dimension(16,16));
    					panel.add(button);
    					FlowLayout layout = (FlowLayout) panel.getLayout();
    					layout.setVgap(0);
    					panel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
    					return panel;
    				}
     
    				if (value == transcriptionsNode){
    					JPanel panel = new JPanel();
    					//panel.setOpaque(false);
    					panel.add(this);
    					JButton button = new JButton(IconManager.QUESTION_MARK);
    					button.setContentAreaFilled(false);
    					button.setBorderPainted(false);
    					button.setMaximumSize(new Dimension(16,16));
    					button.setMinimumSize(new Dimension(16,16));
    					button.setPreferredSize(new Dimension(16,16));
    					button.setEnabled(true);
    					button.addActionListener(new ActionListener(){
     
    						@Override
    						public void actionPerformed(ActionEvent e) {
    							try{
    								OSUtils.displayExplorer(DirectoryManager.getTranscriptionsDirectory(EcouteDescriptor.this.ecoute.getUpva()));
    							} catch (IOException e1) {
    								MyErrorPane.showPanel(MyErrorPane.ERROR,
    										EcouteDescriptor.class,
    										null,
    										"",
    										e1);
    							}
     
    						}
     
    					});
     
    					panel.add(button);
    					FlowLayout layout = (FlowLayout) panel.getLayout();
    					layout.setVgap(0);
    					panel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
    					return panel;
    				}
     
    				if (userObject instanceof File){
    					setText(((File) userObject).getName());
    				}
    				return this;
    			}
     
     
     
    		};
    Qd je clique sur le bouton l'élémnet du Jtree est sélectionné mais le bouton ne déclenche pas l'action listener.
    C'est le Jtree qui recoit l'event du clic et pas le bouton alors que je voudrais que ce soit l'inverse.

    Merci
    Benoit

  2. #2
    Membre éclairé Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Par défaut
    Salut,

    je pense qu'il faut que tu regarde plutot du coté du DefaultTreeCellEditor

  3. #3
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 29
    Par défaut
    piste interessante merci

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 263
    Par défaut JTree UserObject=JPanel / Listener pour JButton
    Bonjour,
    La piste intéressante a-t-elle conduit à une solution ? Pourrions-nous la décortiquer ?
    J'ai un cas semblable à résoudre - voir discussion "JTree dont UserObject = JPanel / Reset données initiales" - sauf que je ne veux rien de JLabel et tout de JPanel. Or 'DefaultTreeCellRenderer' hérite de JLabel.
    La solution intéressera nombre de programmeurs Swing > JTree
    Merci.

Discussions similaires

  1. Problème Action Listener
    Par coqalcoolique dans le forum Débuter
    Réponses: 2
    Dernier message: 30/06/2014, 10h41
  2. Problème avec action listener
    Par pinps dans le forum Débuter
    Réponses: 1
    Dernier message: 11/11/2013, 21h39
  3. Problème action listener
    Par l4r3nZu dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 23/06/2010, 16h18
  4. problème dans le listener d'un jTree
    Par amelA dans le forum Composants
    Réponses: 6
    Dernier message: 30/05/2007, 04h45
  5. [JTree]problème de rafraichissement
    Par peppena dans le forum Composants
    Réponses: 9
    Dernier message: 20/01/2004, 14h06

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