All pastes #947576 Raw Edit

Something

public text v1 · immutable
·published 2008-03-18 16:04 UTC
rendered paste body
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();
    }
}