import javax.swing.*;
import java.util.*;
import java.lang.*;
import javax.swing.JPanel;
import javax.swing.event.TreeSelectionListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeSelectionModel;
import java.io.*;
import java.awt.*;
/*
Created by IntelliJ IDEA.
User: roxana
Date: Jan 18, 2008
Time: 9:48:58 PM
To change this template use File | Settings | File Templates.
*/
/**
Ce mai face problema?
1. Program pentru afisarea unui arbore (obiect JTree) cu fisierele
dintr-un director si din toate subdirectoarele sale. Numele directorului
se preia dintr-un camp text. La modificarea campului text se modifica si
continutul afisat al arborelui.
Initial este afisat numele si continutul directorului curent
*/
/*
Questions?
1. Cum fac sa apara initial doar directorul curent?
2. Cum fac sa scriu textul comentat cu culoare rosie (spre ex)?
3. Cum minimizezi separat 3 comentarii puse unul dupa altul?
4. Cum faci ca atunci cand minimizezi un comentariu sa se vada "titlul" comentariului?
5. Cum poti avea un comentariu mare in care sa ai 3 subcomentarii pe care sa le divizezi?
*/
/*
2. Sa se adauge programului anterior posibilitatea de selectie a unui nod
din arbore, cu afisare valoare nod selectat intr-un al doilea camp text.
Pentru a obtine nodul selectat se pot folosi mai multe metode:
- metoda getLastSelectedPathComponent din clasa JTree (cu rezultat Object)
- metoda getPath din clasa TreeSelectionEvent (cu rezultat TreePath ) si
- metoda "getLastPathComponent" din "TreePath". Clasa "TreePath" corespunde unui vector Object[]
*/
public class Copac extends JFrame implements TreeSelectionListener {
private JTree tree;
private JTextField jtf;
public Copac(){
JPanel jp= (JPanel) this.getContentPane();
File folder= new File("/home/roxana/Desktop/materii an 2/JAVA");
DefaultMutableTreeNode top= new DefaultMutableTreeNode (folder.getName());
createNodes(top,folder);
tree = new JTree(top);
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
tree.addSelectionListener(this);
JScrollPane treeView=new JScrollPane(tree);
jtf = new JTextField("",20);
jp.setLayout(new FlowLayout());
jp.add(treeView);
jp.add(jtf);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
this.setSize(300,400);
this.setLocationRelativeTo(null);
}
public void valueChanged(TreeSelectionEvent e){
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
if (node == null) return;
jtf.setText(node.toString());
}
private void createNodes(DefaultMutableTreeNode top,File folder){
if (!folder.isDirectory()) return;
String[] file_names = folder.list();
File[] files = folder.listFiles();
for (int i=0;i<file_names.length;i++){
DefaultMutableTreeNode nod= new DefaultMutableTreeNode(file_names[i]);
top.add(nod);
createNodes(nod,files[i]);
}
}
public static void main(String argv[]){
Copac c= new Copac();
}
}