Partage
  • Partager sur Facebook
  • Partager sur Twitter

Re-dessiner un arbre

Sujet résolu
    21 juin 2009 à 10:40:07

    Bonjour,

    J'ai un petit problème avec mon arbre: J'arrive à le dessiner mais il ne se met pas à jour quand j'ajoute un dossier. Comment faire?

    import java.awt.BorderLayout;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextField;
    import javax.swing.JTree;
    import javax.swing.event.TreeSelectionEvent;
    import javax.swing.event.TreeSelectionListener;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.tree.TreePath;
    
    public class Fenetre extends JFrame
    {
    	private JTree arbre;
    	private JPanel interfaceGenerale = new JPanel();
    	private JTextField nomAjout = new JTextField("");
    	private JButton btnValider = new JButton("Valider");
    	String lastSelection = new String();
    	
    	public Fenetre()
    	{
    		btnValider.addActionListener(new BoutonListener());
    		
    		buildTree();
    		
    		this.setSize(400, 600);
    		this.setLocationRelativeTo(null);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setTitle("Ajouter des classes");
    		
    		interfaceGenerale.setLayout(new BorderLayout());
    		
    		interfaceGenerale.add(new JScrollPane(arbre), BorderLayout.CENTER);
    		interfaceGenerale.add(nomAjout, BorderLayout.SOUTH);
    		interfaceGenerale.add(btnValider,BorderLayout.EAST);
    		
    		this.setContentPane(interfaceGenerale);
    		//this.setContentPane(new Interface());
    		
    		this.setVisible(true);
    	}
    	
    	private void buildTree()
    	{
    		DefaultMutableTreeNode racine = new DefaultMutableTreeNode("Classes");
    		
    		File f = new File("data/");
    		for(File dossierAct : f.listFiles())
    		{
    			DefaultMutableTreeNode classeAct = new DefaultMutableTreeNode(dossierAct.getName()); // On ajoute la classe a la racine
    			
    			if(dossierAct.isDirectory())
    			{
    				for(File typeVar : dossierAct.listFiles())
    				{
    					// On ajoute le type de variable ou de méthode
    					DefaultMutableTreeNode typeElemAct = new DefaultMutableTreeNode(typeVar.getName());
    					classeAct.add(typeElemAct);
    					
    					if(typeVar.isDirectory())
    					{
    						for(File nomVar : typeVar.listFiles())
    						{
    							// On ajoute la variable/la méthode
    							DefaultMutableTreeNode elemActuel = new DefaultMutableTreeNode(nomVar.getName());
    							typeElemAct.add(elemActuel);
    						}
    					}
    				}
    			}
    			
    			racine.add(classeAct);
    		}
    			
    		arbre = new JTree(racine);
    		arbre.setRootVisible(false);
    		
    		//Que nous plaçons sur le ContentPane de notre JFrame à l'aide d'un scroll 
    		this.getContentPane().add(new JScrollPane(arbre));
    		
    		arbre.addTreeSelectionListener(new TreeSelectionListener(){
    
    			public void valueChanged(TreeSelectionEvent event) {
    				if(arbre.getLastSelectedPathComponent() != null){
    					//La méthode getPath retourne un objet TreePath
    					lastSelection = (getAbsolutePath(event.getPath()));
    				}
    			}
    					
    			private String getAbsolutePath(TreePath treePath){
    				String str = "";
    				//On balaie le contenu de notre TreePath
    				for(Object name : treePath.getPath()){
    					//Si l'objet à un nom, on l'ajoute au chemin
    					if(name.toString() != null)
    					{
    						if(name.toString().equals("Classes"))
    						{
    						}
    						else
    						{
    							str += "/"+name.toString();
    						}
    					}
    				}
    				return str;
    			}
    		});
    	}
    	
    	public class BoutonListener implements ActionListener 
    	{
    
    		public void actionPerformed(ActionEvent arg0) 
    		{
    			
    			String nomDossierAcreer = new String("data"+lastSelection+"/"+nomAjout.getText()+"/");
    			System.out.println(nomDossierAcreer);
    			
    			File newDir = new File(nomDossierAcreer);
    			if(newDir.mkdirs() == true)
    			{
    			}
    			else
    			{
    				System.out.println("Erreur!");
    			}
    		}
    
    	}
    }
    


    import java.io.File;
    
    public class principale 
    {
    	public static void main(String[] args) 
    	{
    		new Fenetre();
    	}
    }
    


    Merci beaucoup

    Edit: J'ai trouvé!
    • Partager sur Facebook
    • Partager sur Twitter

    Re-dessiner un arbre

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown