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

Agents de placement/Fenêtres Java Discussion :

[JTree] Mise à jour d'un JPanel selon le noeud sélectionné dans le JTree


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 12
    Points
    12
    Par défaut [JTree] Mise à jour d'un JPanel selon le noeud sélectionné dans le JTree
    Bonjour à tous,

    Je débute en Java et je souhaite réaliser une application qui affiche une arborescence de paramètres (issus d'un fichier de configuration qu'il me reste à parser) et qui permet, pour chaque noeud final de mon arborescence, de modifier les propriétés du paramètre sélectionné.

    A gauche, un JTree, à droite, le JPanel qui doit agir sur le noeud sélectionné dans le JTree.

    Mon souci pour le moment c'est que je n'arrive pas à faire changer le contenu du JPanel lors du clic sur un noeud final du JTree.

    Voici mon code (que je soumets bien humblement) :
    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
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    import java.awt.Container;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.GridLayout;
    import java.util.Hashtable;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTree;
    import javax.swing.event.TreeSelectionEvent;
    import javax.swing.event.TreeSelectionListener;
    import javax.swing.tree.TreePath;
     
    public class SFPLayout extends JFrame {
     
    	private static final long serialVersionUID = 1L;
    	private JPanel pnlParameter;
    	private JTree preferenceTree;
     
    	public SFPLayout() {
     
    		super("SampleTest");
     
            setSize(800, 700);
     
    		setDefaultCloseOperation(EXIT_ON_CLOSE);
     
    		// Liste des mots-clés par Catégorie
    		final String[] schoolyard = { "School", "Playground", "Parking Lot",
    				"Field" };
    		final String[] mainstreet = { "Grocery", "Shoe Shop", "Five & Dime",
    				"Post Office" };
    		final String[] highway = { "Gas Station", "Convenience Store" };
     
    		final Hashtable<String, String[]> category = new Hashtable<String, String[]>();
     
    		category.put("School grounds", schoolyard);
    		category.put("Downtown", mainstreet);
    		category.put("Highway", highway);
     
    		final Hashtable<String, Hashtable<String, String[]>> rootNode = new Hashtable<String, Hashtable<String, String[]>>();
    		rootNode.put("Preferences", category);
     
    		preferenceTree = new JTree(rootNode);
     
    		pnlParameter = createDefaultPane();
     
    		preferenceTree.addTreeSelectionListener(new TreeSelectionListener() {
    			public void valueChanged(TreeSelectionEvent e) {
    				TreePath path = e.getPath();
    				Object elements[] = path.getPath();
     
    				// Si on est sur un élément de paramètre sélectionné, alors on
    				// fait les opérations
    				if (elements.length == 4) {
    					pnlParameter = createParameterPane(elements[3].toString(),"valeur");
    				}
    					else{
    						pnlParameter = createDefaultPane();
    					}
    				}	
    		});
     
    		Container contentPane = getContentPane();
    		contentPane.setLayout(new GridLayout(1, 3));
    		contentPane.add(new JScrollPane(preferenceTree));
    		contentPane.add(pnlParameter);
    	}
     
    	private JPanel createDefaultPane() {
     
    		pnlParameter = new JPanel();
    		pnlParameter.setLayout(new FlowLayout());
    		pnlParameter.setPreferredSize(new Dimension(250, 630));
    		// container.setBorder(BorderFactory.createTitledBorder(title));
     
    		JLabel lbPleaseSelect = new JLabel("Please select a parameter");
    		pnlParameter.add(lbPleaseSelect);
     
    		return pnlParameter;
    	}
     
    	private JPanel createParameterPane(String ParameterName, String ParameterValue) {
     
            pnlParameter = new JPanel();
            pnlParameter.setLayout(new FlowLayout());
            pnlParameter.setPreferredSize(new Dimension(530, 630));
    		// container.setBorder(BorderFactory.createTitledBorder(title));
     
    		JButton btChangeAll = new JButton(
    				"Change everything in directory");
    		JButton btChangeSelf = new JButton("Change this file only");
     
    		pnlParameter.add(btChangeSelf);
    		pnlParameter.add(btChangeAll);
     
    		return pnlParameter;
    	}
     
    	public static void main(final String args[]) {
     
    		final SFPLayout spfWindow = new SFPLayout();
    		spfWindow.setVisible(true);
    	}
    }
    Pouvez-vous me dire quel listener j'ai dû oublier ou quelle(s) erreur(s) (sûrement grossières) j'ai pu commettre svp?

    D'avance merci.

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    J'ai résolu mon souci, j'ai créé un JPanel qui englobe tout et je fais juste un revalidate() de mon JPanel parent.

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

Discussions similaires

  1. Mise à jour d'une table selon les différences
    Par Kurt92 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/01/2013, 17h17
  2. Mise à jour d'un JPanel
    Par Bullit84 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 13/12/2012, 19h18
  3. Réponses: 1
    Dernier message: 20/11/2007, 17h07
  4. [JTree] Mise à jour de l'affichage
    Par freddy766 dans le forum Composants
    Réponses: 3
    Dernier message: 16/10/2006, 11h39
  5. Réponses: 7
    Dernier message: 30/08/2006, 16h38

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