Componentes só aparecem quando JFrame é maximizado

Bom dia!

Eu tenho um JFrame com um JMenuBar e um JTabbedPane. Estes dois componentes só aparecem quando o JFrame está maximizado. O que há de errado?! Existe um layout "ideal"para usar neste caso?!

Meu código:

import java.awt.BorderLayout;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JTabbedPane;
import javax.swing.KeyStroke;
import javax.swing.UIManager;


public class MainFrame extends JFrame {
	
	private JTabbedPane tabPanel;	
		
	public MainFrame(){
		super("CardPrinter (Sistema para impressão de cartões) SAGEM-ORGA");
		this.setSize(800, 700);
		this.setVisible(true);
		//this.setResizable(false);
		
		//setLayout(new FlowLayout());			
		getContentPane().add(getTabPanel());
		setJMenuBar(new MyMenuBar());
		//pack();
	}
	
	public JTabbedPane getTabPanel() {
		tabPanel = new JTabbedPane();
		tabPanel.addTab("Layout", new LayoutEditorPanel());
		return tabPanel;
	}
	
		
	public static void main(String args[]) {
		try{	
			UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
		}
		catch(Exception e) {}
		new MainFrame();
	}
	
	
	
	class MyMenuBar extends JMenuBar {
		String[] arquivoItems = new String[]{"Abrir arquivo", 
											 "Abrir layout",
											 "Salvar Layout",
											 "Sair"};
		
		String[] inserirItems = new String[]{"Texto",
											 "Imagem",
											 "Código de barras"};
		
		
		public MyMenuBar(){
			
			JMenu arquivoMenu = new JMenu("Arquivo");
			arquivoMenu.setMnemonic(KeyEvent.VK_A);
			
			for(int i = 0; i < arquivoItems.length; i++){
				JMenuItem item = new JMenuItem(arquivoItems[i]);
				//item.setMnemonic(KeyEvent.VK_A);
				arquivoMenu.add(item);
				
			}			
			add(arquivoMenu);
		}
	}
	
	
	

}

Obrigado!

estranho mesmo, na verdade quando vc redimensiona eles aparecem também… to vendo aqui qualquer coisa escrevo mais

[edit]

ae beleza agora sim :slight_smile:

[code] public MainFrame() {
super(“CardPrinter (Sistema para impressão de cartões) SAGEM-ORGA”);
this.setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	getContentPane().add(getTabPanel(), BorderLayout.CENTER);
	setJMenuBar(new MyMenuBar());
	//pack();
	this.setSize(800, 700);
	validate();
}

public JTabbedPane getTabPanel() {
	tabPanel = new JTabbedPane();
	tabPanel.addTab("Layout", new JLabel("Componente aqui"));
	tabPanel.setPreferredSize(new Dimension(400, 400));
	return tabPanel;
}

[/code]

Comentei o pack ali, mas como adicionei um setPreferredSize() no tabPanel, ele sai com aquele tamanho já.

Depois, usando o setSize, os componentes só se arrumam depois de dar validate();

flw

Opa!
Eu já tinha conseguido resolver, só troquei a ordem das linhas no construtor, fiz os add() antes de determinar os tamanhos e funcionou… Mas agora com o seu post deu pra entender direito porque acontece isso…
Muito obrigado!