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

Interfaz en swing

Estas en el tema de Interfaz en swing en el foro de Java en Foros del Web. Buenas amigos como están? Les traigo esta inquietud, pretendo hacer una ventana de una aplicación que estoy desarrollando con java, y lo que quisiera llegar ...
  #1 (permalink)  
Antiguo 15/03/2012, 16:37
 
Fecha de Ingreso: octubre-2010
Mensajes: 154
Antigüedad: 13 años, 6 meses
Puntos: 5
Interfaz en swing

Buenas amigos como están?
Les traigo esta inquietud, pretendo hacer una ventana de una aplicación que estoy desarrollando con java, y lo que quisiera llegar a hacer es:
Como si fuese la ventana de explorador de Windows es decir, al costado izquierdo un jTree con el menú de navegación que va a ser fijo, no se va a modificar.
y en el resto de la ventana derecha que se me vaya actualizando según en que nodo del jTree hace clic el operador, es decir que aparezca lo que corresponda, podía ser alguna planilla, campos para completar con combobox, text area, etc.... que todo se vaya actualizando según que nodo del jtree clickea el operador como comente.
No encontré si alguien ya planteo este tema puntual, lo que pregunto son cuestiones básicas y puntuales que crean que debería seguir o tener en cuenta.
Cualquier cosa escucho sus comentarios y sugerencias.
Desde ya muchas gracias.
  #2 (permalink)  
Antiguo 15/03/2012, 16:43
Avatar de luna690  
Fecha de Ingreso: marzo-2012
Ubicación: Barcelona
Mensajes: 61
Antigüedad: 12 años, 1 mes
Puntos: 3
Respuesta: Interfaz en swing

No podrías poner en la parte central un JPanel, dependiendo del elemento del JTree que hayas escogido? E ir poniendo visible/no visible, sus elementos?

No lo he hecho, pero sería una manera facil y sin complicaciones (creo).
Saludos.
  #3 (permalink)  
Antiguo 16/03/2012, 05:45
 
Fecha de Ingreso: octubre-2010
Mensajes: 154
Antigüedad: 13 años, 6 meses
Puntos: 5
Respuesta: Interfaz en swing

si habia pensado en algo asi, se me habia ocurrido con un jpanel que cuando elegia una fila del jtree que haga una actualizacion o refrezco del jpanel, pero no se si es correcto o recomendable. Tampoco se me ocurre como hacerlo, es otro tema ja.
Si alguien tiene alguna otra recomendacion como para probarla, sera agradecida.
Saludos.
  #4 (permalink)  
Antiguo 16/03/2012, 07:02
Avatar de caruizj  
Fecha de Ingreso: marzo-2012
Ubicación: Málaga
Mensajes: 161
Antigüedad: 12 años, 1 mes
Puntos: 14
Respuesta: Interfaz en swing

Yo después de mucho pelear he conseguido hacer lo que precisamente tú necesitas. Yo lo que he hecho es un JInternalFrame a la izquierda fijo con un JTree y luego a la derecha tengo otros dos JInternalFrames uno arriba que se puede desplazar y luego uno central que es fijo. Si te interesa como lo he hecho dimelo y te pongo el código que es un poco tocho...

Yo lo que no consigo es entender como va el escuchador del Jtree porque yo le doy a los nodos y no se activan los escuchadores...

Un saludo!
__________________
Aprendiendo un poco de Java :D
  #5 (permalink)  
Antiguo 16/03/2012, 07:11
 
Fecha de Ingreso: octubre-2010
Mensajes: 154
Antigüedad: 13 años, 6 meses
Puntos: 5
Respuesta: Interfaz en swing

hola caruizj, y si queres mostrame lo que hiciste y vemos si entre los dos llegamos a algo.
Saludos.
  #6 (permalink)  
Antiguo 16/03/2012, 07:34
Avatar de caruizj  
Fecha de Ingreso: marzo-2012
Ubicación: Málaga
Mensajes: 161
Antigüedad: 12 años, 1 mes
Puntos: 14
Respuesta: Interfaz en swing

Bueno te cuento...

VentanaPrincipal es JFRAME es la ventana principal.

En la ventana principal se alojan 3 JInternalFrames, Izquierdo, Superior y central.

Ahí va el código:

VENTANA PRINCIPAL (JFRAME):


Código:
public class VentanaPrincipal extends JFrame {	



	private VentanaPrincipal vp;
	private PanelCentral pc;
	private PanelSuperior ps;
	private PanelIzquierdo pi;	
	
	
	public VentanaPrincipal(){		
		
		this.setLayout(null);
		this.setTitle("VENTANA PRINCIPAL");
		this.setResizable(true);
		this.setBounds(0, 0, 1024, 768);
		this.setLocationRelativeTo(null);
		vp=this;			   
	    	
		
				
		
		
		
		
		/******** PANEL CENTRAL *******************/
		 pc = new PanelCentral();
		
		
		
		/******** PANEL SUPERIOR *******************/
		 ps = new PanelSuperior(this, pc);
		
		
		/******** PANEL IZQUIERDO *******************/
		 pi = new PanelIzquierdo(this,ps,pc);
		

		 ps.setPanelIzquierdo(pi);

		
		/******** AÑADIR A LA VENTANA *******************/
		add(pi);		
		add(pc);			
		add(ps);

		
	
				
		/******** ESCUCHADOR CUANDO CAMBIAMOS TAMAÑO DE VENTANA PRINCIPAL *******************/
		this.addComponentListener(new ComponentAdapter() {
                  public void componentResized(ComponentEvent e) {
                
                    pi.setBounds(0, 30, 200, vp.getHeight()-72);
                    pc.setBounds(pi.getWidth(),ps.getHeight()+30,vp.getWidth()-pi.getWidth()-18,vp.getHeight()-ps.getHeight()-72);
                    ps.setBounds(pi.getWidth(),30,vp.getWidth()-pi.getWidth()-18,vp.getHeight()-pc.getHeight()-70);
                
                  
            }
        });	
		
		
	}	
	
    public static String getFechaActual() {
        Date ahora = new Date();
        SimpleDateFormat formateador = new SimpleDateFormat("dd-MM-yyyy");
        return formateador.format(ahora);
    }

   
    public static String getHoraActual() {
        Date ahora = new Date();
        SimpleDateFormat formateador = new SimpleDateFormat("hh:mm:ss");
        return formateador.format(ahora);
    }
	
	
	
}
PANEL CENTRAL:

Código:
public class PanelCentral extends JInternalFrame  {


	private int x, y;
	private PanelCentral pc;	
	private JScrollPane scrollPane;
	
	public PanelCentral(){
		
		pc=this;
		this.setLayout(null);
		this.setTitle(null);
		this.setVisible(true);
		this.setClosable(false);
		this.setMaximizable(false);
		this.setResizable(false);
			
			
	}

}
PANEL SUPERIOR
Código:
public class PanelSuperior extends JInternalFrame implements ComponentListener {

	private PanelIzquierdo vpi;
	private VentanaPrincipal vvp;
	private PanelSuperior vps;
	private PanelCentral vpc;
		
	public PanelSuperior(VentanaPrincipal vp, PanelCentral vc){
		
		vps=this;
		vvp=vp;
		vpc=vc;
				
		
		this.setLayout(null);
		this.setTitle(null);
		this.setVisible(true);
		this.setClosable(false);
		this.setMaximizable(false);
		this.setResizable(true);
		
		this.addComponentListener(this);
		
		
	
		
		this.addComponentListener(new ComponentAdapter() {
                    public void componentResized(ComponentEvent e) {
                        
            	
            	 vpc.setBounds(vpi.getWidth(),vps.getHeight()+30,vvp.getWidth()-vpi.getWidth()-18,vvp.getHeight()-             vps.getHeight()-72);
            }
        });
		
	}
	
	public void setPanelIzquierdo(PanelIzquierdo pi){
		
		this.vpi=pi;
	}

	@Override
	public void componentHidden(ComponentEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void componentMoved(ComponentEvent e) {
		vps.reshape(vpi.getWidth(), 30,vvp.getWidth()-vpi.getWidth()-18,vvp.getHeight()-vpc.getHeight()-70);
				
	}

	@Override
	public void componentResized(ComponentEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void componentShown(ComponentEvent e) {
		// TODO Auto-generated method stub
		
	}

	
		
	
}

PANEL IZQUIERDO

Código:
public class PanelIzquierdo extends JInternalFrame implements ComponentListener , MouseListener{


	private PanelIzquierdo pi;
	private VentanaPrincipal vvp;
	private PanelSuperior vps;
	private PanelCentral vpc;
	private JTree tree;

public PanelIzquierdo(VentanaPrincipal vp, PanelSuperior vs, PanelCentral vc){
	
	
	//this.setLayout(null);
	this.setBounds(0,30,200,768);	
	this.setVisible(true);
	this.setClosable(false);
	this.setMaximizable(false);
	this.setResizable(true);		
	this.setTitle("Navegador");
	
	
	
	pi=this;
	vvp=vp;
	vps=vs;
	vpc=vc;
	
	this.addComponentListener(this);
	this.addMouseListener(this);
	
	crearJTREE();
		
	
	this.addComponentListener(new ComponentAdapter() {
        public void componentResized(ComponentEvent e) {
                   
            vpc.setBounds(pi.getWidth(),260,vvp.getWidth()-pi.getWidth()-18,vvp.getHeight()-302);
            vps.setBounds(pi.getWidth(),30,vvp.getWidth()-pi.getWidth()-18,vvp.getHeight()-vpc.getHeight()-70);
            tree.setBounds(0, 0, pi.getWidth(), pi.getHeight());
        }
    });
	
}

@Override
public void componentHidden(ComponentEvent e) {
	// TODO Auto-generated method stub
	
}

@Override
public void componentMoved(ComponentEvent e) {
	pi.reshape(0, 30, 200, vvp.getHeight()-72);
	
}

@Override
public void componentResized(ComponentEvent e) {
	// TODO Auto-generated method stub
	
}

@Override
public void componentShown(ComponentEvent e) {
	// TODO Auto-generated method stub
	
}

public void crearJTREE(){
	
	DefaultMutableTreeNode Sistema = new DefaultMutableTreeNode("Sistema");
	DefaultMutableTreeNode hijos = new DefaultMutableTreeNode("hijos");
	DefaultTreeModel modelo = new DefaultTreeModel(Sistema);
	tree = new JTree(modelo);
	
	tree.setBounds(0, 0, pi.getWidth(), pi.getHeight());

	
	
	DefaultMutableTreeNode Medicos = new DefaultMutableTreeNode("Medicos");
	DefaultMutableTreeNode Otros = new DefaultMutableTreeNode("Otros");
	DefaultMutableTreeNode Altas=new DefaultMutableTreeNode("Altas");
	DefaultMutableTreeNode Bajas=new DefaultMutableTreeNode("Bajas");
	DefaultMutableTreeNode Quirofano = new DefaultMutableTreeNode("Quirofano");
	DefaultMutableTreeNode Otros2=new DefaultMutableTreeNode("Otros 2");
	
	
	modelo.insertNodeInto(Medicos,Sistema,0);
	modelo.insertNodeInto(Otros, Sistema, 1);
	modelo.insertNodeInto(Otros2, Sistema, 2);
	modelo.insertNodeInto(Altas, Medicos, 0);
	modelo.insertNodeInto(Bajas, Medicos, 1);
	modelo.insertNodeInto(Quirofano, Medicos, 2);

		
	add(tree);
}

@Override
public void mouseClicked(MouseEvent e) {

	
}

@Override
public void mouseEntered(MouseEvent e) {
	// TODO Auto-generated method stub
	
}

@Override
public void mouseExited(MouseEvent e) {
	// TODO Auto-generated method stub
	
}

@Override
public void mousePressed(MouseEvent e) {

}

@Override
public void mouseReleased(MouseEvent e) {
	// TODO Auto-generated method stub
	
}


}

Bueno llamariamos desde main a VentanaPrincipal.

La estructura queda así:


h ttp://www.hiboox.es/go/imagenes/adultos/estructura,573d388f46043d3c76714852aaa20d45.png.ht ml


Lo que no sé es como va el escuchador del JTree para que cuando le hagas click sobre un nodo se escuche... ¿Qué es haciendo un addMouseListener? ¿lo sabes?

Un saludo.
__________________
Aprendiendo un poco de Java :D
  #7 (permalink)  
Antiguo 16/03/2012, 08:03
 
Fecha de Ingreso: octubre-2010
Mensajes: 154
Antigüedad: 13 años, 6 meses
Puntos: 5
Respuesta: Interfaz en swing

no lo se, pero supongo que es solo cuestion de darle en la tecla al evento.
puedo intentar ver como hacerlo, porque es mas o menos lo que estoy intentando hacer.
Te aviso si encuento algo.
Saludos.
  #8 (permalink)  
Antiguo 16/03/2012, 11:56
Avatar de caruizj  
Fecha de Ingreso: marzo-2012
Ubicación: Málaga
Mensajes: 161
Antigüedad: 12 años, 1 mes
Puntos: 14
Respuesta: Interfaz en swing

Es así:

Código:
String op=null;

crearArbol();

tree.addTreeSelectionListener(new TreeSelectionListener() {
		
		@Override
		public void valueChanged(TreeSelectionEvent e) {
			
			op=tree.getLastSelectedPathComponent().toString();
			
			switch(op){
			
				case "Nodo1":
					JOptionPane.showMessageDialog(null, "Has pulsado Nodo1");				
					break;
				case "Nodo2":
					JOptionPane.showMessageDialog(null, "Has pulsado Nodo2");
					break;
				case "NodoX":

                                .
                                .
                                .
                    }
__________________
Aprendiendo un poco de Java :D
  #9 (permalink)  
Antiguo 19/06/2012, 16:59
 
Fecha de Ingreso: octubre-2010
Mensajes: 154
Antigüedad: 13 años, 6 meses
Puntos: 5
Respuesta: Interfaz en swing

Hola caruizj, de lujo anduvo lo que pasaste, ahora estoy intentando refrezcar las ventanas de al lado.
La seleccion del elemento del Tree anda 10 puntos, ahora no logro mostrar nada en las internalFrame cuando selecciona uno.
vos pudiste hacerlo???
un abrazo.
  #10 (permalink)  
Antiguo 21/06/2012, 09:13
Avatar de caruizj  
Fecha de Ingreso: marzo-2012
Ubicación: Málaga
Mensajes: 161
Antigüedad: 12 años, 1 mes
Puntos: 14
Respuesta: Interfaz en swing

Cuando tenga un hueco te paso un tutorial que tengo a media de lo que pides. Ley tu mensaje, en cuanto lo tenga te lo paso.

Un saludo.
__________________
Aprendiendo un poco de Java :D

Etiquetas: interfaz, swing
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 05:44.