Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/08/2008, 10:37
Avatar de diegoy2k
diegoy2k
 
Fecha de Ingreso: julio-2006
Ubicación: Algun Lugar
Mensajes: 68
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Ayuda con JTree

Hola como va?

Para poder asociar eventos al JTree tenes que implementar interfaces,
Código:
public class Arbol extends JTree implements TreeExpansionListener,	TreeSelectionListener{

}
yo estuve usando el jtree hace como dos años mucho no me acuerdo!!!, fue un trabajo que tuve que continuar, alguien ya habia hecho cosas, aca te dejo el codigo!!!

Código:
mport java.util.Iterator;
import java.util.Observable;
import java.util.Observer;
import java.util.Vector;

import javax.swing.JTree;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeExpansionListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeNode;

import negocio.Componente;
import negocio.Sistema;
import negocio.Usuario;
/*
 * Created on 27/09/2005
 */


/**
 * Esta clase represnenta el Arbol que contiene todos los proyectos para poder recorrerlos. 
 * @author XXXXX Luciano
 * @author XXXXX Diego
 */
public class Arbol extends JTree implements TreeExpansionListener,
		TreeSelectionListener, Observer{

	private  Acciones sinAcceso;
	private  Vector accionesNivel;
	private  Sistema sis;
	private PTarea pTarea;  
	private PTareaCompuesta pTareaCompuesta;
	private PSinAcceso pSinAcceso;
	
	/**
	 * Constructor de la clase.
	 * @param root: Raiz del Arbol
	 */
	public Arbol(TreeNode root) {
		super(root);
		this.addTreeExpansionListener(this);
		this.addTreeSelectionListener(this);
		accionesNivel = new Vector();
	}
	
	public void setSistema(Sistema sys){
		this.sis = sys;
		sis.addObserver(this);		
	}
	
	public void setRender(){
		this.setCellRenderer(new MiRender(sis.getPolitica()));
	}
	
	/**
	 * TODO Ver si lo podemos sacar.
	 */
	public void treeExpanded(TreeExpansionEvent event) {
	}
	
	public void treeCollapsed(TreeExpansionEvent event) {
	}

	public void valueChanged(TreeSelectionEvent e) {
		MostrarSeleccion();
	}
	
	/**
	 * Este metodo muestra el panel correspondiente 
	 * al tipo de componente seleccionado. 
	 */
	private void MostrarSeleccion(){
		DefaultMutableTreeNode nodo = (DefaultMutableTreeNode) this.getLastSelectedPathComponent();
        if (nodo == null) 
        	return;
        Object informacion = nodo.getUserObject();
       	Acciones Accion=((Nodo)informacion).getAccion();
       	Componente comp=((Nodo)informacion).getComponente();
      	ocultar();
       	Usuario uActual = sis.getUsuario();
       	if (uActual.AccesoLectura(informacion.toString()))
       		Accion.mostrar(comp);
       	else
       		sinAcceso.mostrar(informacion);
	}
	
	/**
	 * @param Accion Representa el panel que se mostrara cuando se seleccione un nodo.  
	 */
	public boolean setAccion(Acciones Accion){
		Accion.ocultar();
		accionesNivel.add(Accion);
		return true;
	}
	
	public void setPanelTarea(PTarea t){
		pTarea=t;
	}
	
	public PTarea getPanelTarea(){
		return pTarea;
	}
	
	public void setPanelSinAcceso(PSinAcceso sa){
		pSinAcceso=sa;
	}
	
	public PSinAcceso getPanelSinAcceso(){
		return pSinAcceso;
	}
	
	public void setPanelTareaCompuesta(PTareaCompuesta tc){
		pTareaCompuesta=tc;
	}
	
	public PTareaCompuesta getPanelTareaCompuesta(){
		return pTareaCompuesta;
	}
	
	/**
	 * Esta funcion oculta todos los paneles.
	 */
	private void ocultar(){
		Iterator Todos = accionesNivel.iterator();
		sinAcceso.ocultar();
		while (Todos.hasNext()) {
	        Acciones Accion = (Acciones) Todos.next();
	        if (Accion != null)
	        	Accion.ocultar();
		}
	}
	
	/**
	 * @return Retorna el valor del panel sinAcceso.
	 */
	public Acciones getSinAcceso() {
		return sinAcceso;
	}
	
	/**
	 * Agregar una accion que sera lanzada cuando el arbol tenga acceso denegado a un determinado componente.
	 * @param sinAcceso Accion a guardar.
	 */
	public void setSinAcceso(Acciones sA) {
		sinAcceso = sA;
	}
	
	/**
	 * Actualiza el arbol ante un cambio en el sistema.
	 */
	public void update(Observable o, Object arg) {
		MostrarSeleccion();
	}
	
	public void mostrarRaiz(){
		this.setSelectionInterval(0,0);
	}

	private void initGUI() {
		try {
			this.setPreferredSize(new java.awt.Dimension(115, 114));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
Espero te sirva, vuelvo a decir yo segui este codigo, y lo modifique!!!
Saludos!!