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

Problemas al cambiar de panel en JSplitPane

Estas en el tema de Problemas al cambiar de panel en JSplitPane en el foro de Java en Foros del Web. Hola a todos. Tengo un problema con un panel, el cual tiene dos paneles(uno llamado derecho y otro izquierdo) "unidos" mediante un JSplitPane. La idea ...
  #1 (permalink)  
Antiguo 27/04/2010, 12:41
 
Fecha de Ingreso: abril-2010
Mensajes: 11
Antigüedad: 14 años
Puntos: 0
Problemas al cambiar de panel en JSplitPane

Hola a todos. Tengo un problema con un panel, el cual tiene dos paneles(uno llamado derecho y otro izquierdo) "unidos" mediante un JSplitPane. La idea es que el panel derecho tiene una lista que cada vez que pulsamos una de las opciones, este mismo panel cambia a otro.Pero lo único que he conseguido es q se me cambie el panel durante segundos, y una vez pasado este tiempo vuelva al panel inicial sin que se lo indique. He probado intentanto trabajar con otro thread pero como el JSplitPane esta en el Thread main al final pasa lo mismo. ¿Cómo podría solucionar este problema?
Aqui dejo la clase que se encarga de la construcción del panel(pPrincipal) que tiene al JSplitpane, al que se le llama cada vez que hacemos la modificación del panel derecho.

Muchas Gracias.

//Clase que llamamos para modificar el Panel Principal.

public void ConstruccionPaneles() {

//Panel Izquierdo que nunca se modifica
panelIz = PanelMstElectron();

//Panel Derecho
//Comprobamos si estan activos un panel u otro.
if(panelIndiceB){
//Este es el panel derecho inicial.
panelDe = PanelIndice();
}
else if(panelHolaB){
//Ponemos a true la variable que nos indica que ya ha habido un cambio de paneles
cambioPanel = true;
//Borramos el anterior panel derecho
pPrincipal.remove(panelDe);
ScrollDe.remove(panelDe);
ScrollDe.validate();
splitPane.remove(panelDe);
splitPane.validate();
//nuevo panel derecho
panelDe = PanelHola();
}

//Scroll para el panel izq
ScrollIz = new JScrollPane(panelIz);
ScrollIz.setViewportView(panelIz);
pPrincipal.add(ScrollIz);
//Scroll para el panel derecho
ScrollDe = new JScrollPane(panelDe);
ScrollDe.setViewportView(panelDe);
pPrincipal.add(ScrollDe);
if(cambioPanel){
ScrollDe.validate();
}

//Añadimos un JSpitPanel entre el panel de la izq. y el de la der.
splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
splitPane.setLeftComponent(ScrollIz);
splitPane.setRightComponent(ScrollDe);

splitPane.setOneTouchExpandable(true);
pPrincipal.add(splitPane);
if(cambioPanel){
splitPane.validate();
pPrincipal.validate();
}

//Proporcionamos el tamaño minimo de los dos componentes del Split Panel
ScrollIz.setMinimumSize(new Dimension(300,100));
ScrollDe.setMinimumSize(new Dimension(200,100));

//Se establece la localizacion inicial y el tamaño del divisor
splitPane.setDividerLocation(484);
splitPane.setDividerSize(7);
}



La libertad estimula el espíritu de los hombres fuertes.
  #2 (permalink)  
Antiguo 28/04/2010, 11:57
 
Fecha de Ingreso: abril-2010
Mensajes: 11
Antigüedad: 14 años
Puntos: 0
Sonrisa Respuesta: Problemas al cambiar de panel en JSplitPane

Buenas de nuevo!!

Os escribo ya que dándole vueltas al tema al final he encontrado la solución. Simplemente hacia falta poner un if que separase el panel principal inicial de los siguientes que se cambiase. Una tontería que no se porque no se me ocurrió en el momento.
De todas formas gracias a todos los que se hayan interesado.

Aquí dejo como sería el código por si a alguno le interesa:

//Clase donde organizamos q paneles debemos instalar(para el Panel Principal)
public void ConstruccionPaneles() {
//Vemos si es el panel inicial.
if(!cambioPanel) {
//Ponemos a true la variable que nos indica que ya se puede hacer un cambio de paneles
cambioPanel = true;

//Panel Izquierdo inicial
panelIz = PanelMstElectron();
//Panel Derecho inicial
panelDe = PanelIndice();

//Scroll para el panel izq
ScrollIz = new JScrollPane(panelIz);
ScrollIz.setViewportView(panelIz);
pPrincipal.add(ScrollIz);
//Scroll para el panel derecho
ScrollDe = new JScrollPane(panelDe);
ScrollDe.setViewportView(panelDe);
pPrincipal.add(ScrollDe);
//Añadimos un JSpitPanel entre el panel de la izq. y el de la der.
splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
splitPane.setLeftComponent(ScrollIz);
splitPane.setRightComponent(ScrollDe);
//Se puede mover el JSplitPane
splitPane.setOneTouchExpandable(true);
pPrincipal.add(splitPane);
}
else {
//Panel Derecho
if(panelIndiceB){
//Borramos el anterior panel derecho
pPrincipal.remove(panelDe);
ScrollDe.remove(panelDe);
splitPane.remove(panelDe);
//nuevo panel derecho
panelDe = PanelIndice();
//Scroll para el panel derecho
ScrollDe = new JScrollPane(panelDe);
ScrollDe.setViewportView(panelDe);
splitPane.setRightComponent(ScrollDe);
splitPane.validate();
pPrincipal.validate();

}
else if(panelHolaB){
//Borramos el anterior panel derecho
pPrincipal.remove(panelDe);
ScrollDe.remove(panelDe);
splitPane.remove(panelDe);
//nuevo panel derecho
panelDe = PanelHola();
//Scroll para el panel derecho
ScrollDe = new JScrollPane(panelDe);
ScrollDe.setViewportView(panelDe);
//Ponemos el Panel Derecho en el JSplitPane
splitPane.setRightComponent(ScrollDe);
splitPane.validate();
pPrincipal.validate();

}
}

//Proporcionamos el tamaño minimo de los dos componentes del Split Panel
ScrollIz.setMinimumSize(new Dimension(300,100));
// ScrollDe.setMinimumSize(new Dimension(200,100));

//Se establece la localizacion inicial y el tamaño del divisor
splitPane.setDividerLocation(484);
splitPane.setDividerSize(7);
}



La libertad estimula el espíritu de los hombres fuertes.

Etiquetas: panel
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 03:59.