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

Agregar componentes dinamicamente en JPanel - No Refresca

Estas en el tema de Agregar componentes dinamicamente en JPanel - No Refresca en el foro de Java en Foros del Web. Hola, muchachos. Hace poco que comencé a trabajar con Swing y estoy con una pequeña aplicación la cual consiste en lo siguiente: 1 - Posee ...
  #1 (permalink)  
Antiguo 05/12/2009, 16:04
 
Fecha de Ingreso: diciembre-2009
Mensajes: 8
Antigüedad: 14 años, 4 meses
Puntos: 0
Agregar componentes dinamicamente en JPanel - No Refresca

Hola, muchachos.

Hace poco que comencé a trabajar con Swing y estoy con una pequeña aplicación la cual consiste en lo siguiente:

1 - Posee un JPanel superior llamado "cabecera" el cual contiene un botón.
2 - Posee un JTabbedPane central llamado "tabs" el cual contiene un par de solapas.

El botón simplemente lo que hace es crear el JTabbedPane para posteriormente visualizarlo. El problema se da en cuando trata de hacer esto, por algún motivo no está permitiendo visualizar el JTabbedPane. Pero qué pasa? Si hago un click en el marco de la ventana el JTabbedPane aparece!! Lo lógico es que debería aparecer sin hacer click en el marco de la ventana.

El código es el siguiente:

Código:
import javax.swing.*;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class prueba extends JFrame implements ActionListener {

	private JMenuBar mainMenuBar;					//Bara de Menu
	private JMenu mainMenuBarFile;				//Menu File
	private JMenu mainMenuBarHelp;				//Menu Help
	
	private JPanel cabecera;
	private JButton boton;
	private JTabbedPane tabs;
	
	private Container myCont;
	public prueba(){
		
		mainMenuBar = new JMenuBar();				//Crea la barra de Menu
		mainMenuBarFile = new JMenu("File");		//Crea menu File
		mainMenuBarHelp = new JMenu("Help");		//Crea menu Help
		
		mainMenuBarFile.setMnemonic('F');			//Shortcut File
		mainMenuBarHelp.setMnemonic('H');			//Shortcut Help
		
		mainMenuBar.add(mainMenuBarFile);			//Agrega File a MenuBar
		mainMenuBar.add(mainMenuBarHelp);			//Agrega Help a MenuBar
		
		cabecera = new JPanel(new FlowLayout(FlowLayout.LEFT)); //Crea la cabecera
		
		boton = new JButton("Crear");		//Crea el boton
		boton.addActionListener(this);		//Agrega gestor de evento
		cabecera.add(boton);				//Agrega el boton a la cabecera
		
		
		myCont = this.getContentPane();				//Crea el panel de la ventana
		myCont.setLayout(new BorderLayout());		//define un layout
		myCont.add(cabecera,BorderLayout.NORTH);	//La cabecera va al norte
		
		
	}
	
	//Main
	public static void main(String[] args) {
		prueba app = new prueba();
		app.showWindow();
	}
	
	public void showWindow(){
		this.setTitle("prueba");
		this.setSize(400,200);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setUndecorated(true);													
		this.setLocationRelativeTo(null);											
		this.getRootPane().setWindowDecorationStyle(JRootPane.QUESTION_DIALOG);	
		this.setJMenuBar(mainMenuBar);
		this.setVisible(true);
	}
	//Gestor de eventos
	public void actionPerformed(ActionEvent e) {
		myCont.add(crearTabs(),BorderLayout.CENTER);  //El tabPanel al centro
	}

	//Crea el tabPanel
	public JTabbedPane crearTabs(){
		JLabel label = new JLabel("Panel 1");
		JLabel label2 = new JLabel("Panel 2");
		tabs = new JTabbedPane();
		tabs.addTab("Tab 1", null, label);
		tabs.addTab("Tab 2", null, label2);
		return tabs;
	}
}



Aclaro lo siguiente: No sólo pasa cuando intento cargar un JTabbedPane dinamicamente, si no que también lo hace con cualquier componente.

Alguien tiene idea de lo que puede ser?

Desde ya agradezco su ayuda.
Un abrazo,
Cristian.
  #2 (permalink)  
Antiguo 05/05/2010, 08:21
Avatar de elangelcaido  
Fecha de Ingreso: septiembre-2003
Ubicación: Oviedo
Mensajes: 1.068
Antigüedad: 20 años, 7 meses
Puntos: 4
Respuesta: Agregar componentes dinamicamente en JPanel - No Refresca

Yo tengo el mismo problema. Actualizo un JPanel, que es atributo de la clase, y los cambios no se ven hasta que no modifico el tamaño de la ventana o hago click en el marco de la ventana.

¿Alguien nos puede echar una mano?

Gracias.
__________________
Ta Luego! Al final sólo puede quedar uno...
________
lukos.org
  #3 (permalink)  
Antiguo 05/05/2010, 08:23
Avatar de elangelcaido  
Fecha de Ingreso: septiembre-2003
Ubicación: Oviedo
Mensajes: 1.068
Antigüedad: 20 años, 7 meses
Puntos: 4
Respuesta: Agregar componentes dinamicamente en JPanel - No Refresca

Vale, acabo de encontrar la solución hace un minuto: http://www.forosdelweb.com/f45/refre...6/#post1208723
__________________
Ta Luego! Al final sólo puede quedar uno...
________
lukos.org
  #4 (permalink)  
Antiguo 05/05/2010, 10:19
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Agregar componentes dinamicamente en JPanel - No Refresca

también vale llamar al método updateUI() del panel después de añadirlo o añadirle algo.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 05/06/2010, 09:24
 
Fecha de Ingreso: junio-2010
Mensajes: 132
Antigüedad: 13 años, 10 meses
Puntos: 3
Respuesta: Agregar componentes dinamicamente en JPanel - No Refresca

Holaaa acabo de ver este post y la verdad es que me tuve que suscribir, para darles las gracias a cristian, chuidiang y a elangelcaido....me salvaron la vida..muchas gracias
  #6 (permalink)  
Antiguo 01/08/2011, 17:26
Avatar de radus  
Fecha de Ingreso: agosto-2011
Mensajes: 9
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Agregar componentes dinamicamente en JPanel - No Refresca

muchisimas gracias por tu informacion, no podia encontrar en ningun lado porque no cargaba correctamente el 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 11:37.