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é!
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.