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