Foros del Web » Programación para mayores de 30 ;) » Java »

Ayuda con JTree

Estas en el tema de Ayuda con JTree en el foro de Java en Foros del Web. Hola Amigos del foro, quisiera saber como puedo hacer para que un JTree tenga los eventos, que cuando le de click o enter en una ...
  #1 (permalink)  
Antiguo 16/08/2008, 07:05
 
Fecha de Ingreso: julio-2008
Mensajes: 10
Antigüedad: 16 años, 4 meses
Puntos: 0
Ayuda con JTree

Hola Amigos del foro, quisiera saber como puedo hacer para que un JTree tenga los eventos, que cuando le de click o enter en una de sus hojas pueda habrir un Frame correspondiente a esa hoja, no se si me explico Algo asi como lo hace el IDE Eclipse que tiene un JTree al lado izquierdo donde tu le das un click o enter en una de sus hojas y te habre la class correspondiente, Es exactamente lo que quiero yo, pero no se como hacerlo ya que estoy de recien utilizando este componente......Por favor si alguien pudiera ayudarme o orientarme......
  #2 (permalink)  
Antiguo 16/08/2008, 10:37
Avatar de diegoy2k  
Fecha de Ingreso: julio-2006
Ubicación: Algun Lugar
Mensajes: 68
Antigüedad: 18 años, 4 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!!
  #3 (permalink)  
Antiguo 16/08/2008, 10:48
 
Fecha de Ingreso: julio-2008
Mensajes: 10
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Ayuda con JTree

Gracias Amigo, lo voy chekear.........
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:13.