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.