Problemas da JVM na exibição das minhas GUIs[RESOLVIDO]

5 respostas
harrysongui

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?

5 Respostas

kiko_lp_St_jimmy

Cara fica difícil responder sem ver teu código.

Otimização - SEO

harrysongui

Seque um exemplo:

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);
	}		
}
ViniGodoy

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.

ViniGodoy

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á.

harrysongui

Desculpa por ter postado no lugar errado e obrigado pela dica.

Criado 29 de janeiro de 2012
Ultima resposta 30 de jan. de 2012
Respostas 5
Participantes 3