Em quase todos as minhas GUIs, a JVM costuma exibir somente o frame,sem exibir os componentes que estão dentro dele.E aí é só eu redimensionar a janela pra qualquer direção e os componentes são exibidos.O problema é mesmo da JVM ou será que eu estou fazendo algo errado no código?
Seque um exemplo:
[code]package harryson;
import java.io.;
import java.awt.;
import java.awt.event.;
import javax.swing.;
public class Test{
private JFrame frame;
private JPanel mainPanel;
private JMenuBar menuBar;
private JMenu menu;
private JMenuItem saveItem;
private JMenuItem openItem;
private JMenuItem sairItem;
private JTextArea campo;
private JScrollPane scroller;
private JFileChooser fileSave;
private JFileChooser fileOpen;
public static void main(String[]args){
Test gui=new Test();
gui.exibeGui();
}
public void exibeGui(){
criaComponentes();
setAcaoComponentes();
configuraComponentes();
insereComponentes();
}
class Campo1 implements MouseListener{
public void mouseClicked(MouseEvent ev){
campo.setText("");
}
public void mouseEntered(MouseEvent ev){}
public void mouseExited(MouseEvent ev){}
public void mouseReleased(MouseEvent ev){}
public void mousePressed(MouseEvent ev){}
}
class ButtonSave implements ActionListener{
public void actionPerformed(ActionEvent ev){
if ("Salvar".equals(ev.getActionCommand())) {
exibeDialogoSave();
}
}
}
class Abrir implements ActionListener{
public void actionPerformed(ActionEvent ev){
if ("Abrir".equals(ev.getActionCommand())) {
exibeDialogoOpen();
}
}
}
class Sair implements ActionListener{
public void actionPerformed(ActionEvent ev){
if("Sair".equals(ev.getActionCommand())){
System.exit(0);
}
}
}
public void exibeDialogoSave(){
fileSave=new JFileChooser();
fileSave.showSaveDialog(frame);
gravar(fileSave.getSelectedFile());
}
public void exibeDialogoOpen(){
fileOpen=new JFileChooser();
fileOpen.showOpenDialog(frame);
campo.setText(abrir(fileOpen.getSelectedFile()));
}
public String abrir(File file){
String line="";
String aux="";
try{
File arquivo=file;
FileReader fr=new FileReader(arquivo);
BufferedReader br=new BufferedReader(fr);
while((line=br.readLine())!=null){
aux=aux+line+"\n";
}
br.close();
}catch(Exception ex){
line="n?o foi possÌvel realizar a leitura";
}finally{
line=aux;
return line;
}
}
public void gravar(File file){
try{
BufferedWriter arquivo=new BufferedWriter(new FileWriter(file));
arquivo.write(campo.getText());
arquivo.close();
}catch(Exception ex){
JOptionPane.showMessageDialog(null, "N?o foi selecionado um nome para gravaÁ?o do arquivo");
}
}
public void criaComponentes(){
frame=new JFrame("MenuBar");
mainPanel=new JPanel();
menuBar=new JMenuBar();
menu=new JMenu("File");
saveItem=new JMenuItem("Salvar");
openItem=new JMenuItem("Abrir");
campo=new JTextArea("Enter text here",15,25);
scroller=new JScrollPane(campo);
sairItem=new JMenuItem("Sair");
}
public void configuraComponentes(){
frame.setSize(450,380);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
}
public void setAcaoComponentes(){
campo.addMouseListener(new Campo1());
saveItem.addActionListener(new ButtonSave());
sairItem.addActionListener(new Sair());
openItem.addActionListener(new Abrir());
menu.setMnemonic(KeyEvent.VK_F);
}
public void insereComponentes(){
menu.add(saveItem);
menu.add(openItem);
menu.add(sairItem);
menuBar.add(menu);
frame.setJMenuBar(menuBar);
frame.getContentPane().add(BorderLayout.CENTER,mainPanel);
mainPanel.add(scroller);
}
}
[/code]
GUI é a sigla de (Graphical User Interface) ou “Interface Gráfica de Usuário”. Se seu problema é aí, deveria ter aberto o tópico no fórum de interface gráfica.
Tópico movido.
A solução do seu problema é simples. Deixe o frame.setVisible(true) como última coisa no seu método exibeGui().
O erro ocorre porque você deixa o JFrame visível antes de colocar os componentes lá.
Desculpa por ter postado no lugar errado e obrigado pela dica.