Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/12/2009, 16:04
cristiancrm
 
Fecha de Ingreso: diciembre-2009
Mensajes: 8
Antigüedad: 15 años, 1 mes
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.