J'ai eu de la difficulté à monter un arbre et à le lancer pour obtenir un résultat comme ci-dessous.Arbres et tableaux
Je suis donc censé créer un arbre avec des racines et des enfants par un fichier .txt
.
Ceci est le code, et je vais donner une brève explication ci-dessous.
public class Tree extends TreeFrame{
Tree() throws FileNotFoundException {
super();
}
private static final long serialVersionUID = 1L;
DefaultTreeModel model;
Nod nod;
static Tree main;
static String filen ="";
public void initTree() throws FileNotFoundException{
filen = "C:/Users/MyComp/workspace/Lab5/src/Lab5/Life.txt";
@SuppressWarnings("resource")
Scanner sc = new Scanner(new File(filen));
sc.nextLine();
ArrayList<DefaultMutableTreeNode> ar = null;
while (sc.hasNextLine()){
String sc2 = sc.nextLine().replace("<", "");
char chr = '/';
if (sc2.charAt(0) != chr){
String[] parts = sc2.split(" ");
String[] parts2 = parts[1].split("=\"");
String[] parts3 = sc2.split(">");
nod = new Nod(parts2[1].substring(0, parts2[1].length() - 2), parts[0], parts3[1]);
ar = new ArrayList<DefaultMutableTreeNode>();
for (int i = 0; i < nod.getDepth(); i++){
ar.add(nod);
}
}
buildTree(ar);
}
}
void buildTree(ArrayList<DefaultMutableTreeNode> a){
model = new DefaultTreeModel (a);
tree = new JTree(model);
tree.setBackground(Color.green);
}
void showDetails(TreePath path){
if (path == null)
return;
int a = path.getPathCount()-1;
DefaultMutableTreeNode b = (DefaultMutableTreeNode) path.getPathComponent(a);
String info = ((Nod) b).getText();
JOptionPane.showMessageDialog(this, info);
}
public static void main(String[] args) throws FileNotFoundException{
if(args.length>0){
filen=args[0];
}
main = new Tree();
}
}
Nod
est juste la classe qui rend les objets avec le nom, le niveau et le texte. Donc la pensée principale était de, importer le fichier -> le lire -> en faire des objets -> créer un tableau et y ajouter les "noeuds"/objets -> faire un TreeModel
par le tableau/"noeuds" -> créer un arbre par le TreeModel
(comme vous voyez) -> et juste l'exécuter avec l'extension pour obtenir l'interface graphique. Mais j'obtiens une erreur de syntaxe sur ArrayList<DefaultMutableTreeNode>
.
Voyez-vous le problème?
** Toujours ** poster le message d'erreur complet avec votre question. Vous voulez que la question soit aussi facile à répondre que possible, non? –
Notez que vous recréez l'arrayliste à chaque itération d'une boucle, ce qui n'a aucun sens. Créez l'arrayliste depuis le début et utilisez-le, mais n'en continuez pas à en créer un. –
Je voulais juste ajouter tous les objets dans le même tableau, mais oui je pense que c'est quelque chose qui ne va pas avec cette boucle. – Alwe17