JFrame Bug

3 respostas Resolvido
jframeswingjava
M

Pessoal estou com um problema, toda vez que executo qualquer JFrame a janela aparece corretamente porém logo após para de responder e fica travada e não executa mais.

Alguém sabe o motivo?

public ArquivoFrontEnd() {

initialize();

}
private void initialize() {
	
	arquivoFront = new JFrame();
	arquivoFront.setResizable(false);
	arquivoFront.setTitle("Criar Arquivo Novo");
	arquivoFront.getContentPane().setBackground(Color.WHITE);
	arquivoFront.setBounds(100, 100, 393, 312);
	arquivoFront.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	arquivoFront.getContentPane().setLayout(null);
	
	JLabel criarArquivoNovoText = new JLabel("Criar Arquivo Novo");
	criarArquivoNovoText.setHorizontalAlignment(SwingConstants.CENTER);
	criarArquivoNovoText.setFont(new Font("Arial Unicode MS", Font.PLAIN, 12));
	criarArquivoNovoText.setBounds(127, 140, 133, 30);
	arquivoFront.getContentPane().add(criarArquivoNovoText);
	
	JPanel panel = new JPanel();
	panel.setBounds(10, 34, 357, 51);
	arquivoFront.getContentPane().add(panel);
	panel.setLayout(null);
	
	JComboBox comboBox = new JComboBox();
	comboBox.setBounds(16, 11, 325, 26);
	panel.add(comboBox);
	
	JButton bntCriar = new JButton("Criar");
	bntCriar.setBounds(149, 249, 89, 23);
	arquivoFront.getContentPane().add(bntCriar);
	
	JLabel jaCriadosText = new JLabel("Criar Arquivo Novo");
	jaCriadosText.setHorizontalAlignment(SwingConstants.CENTER);
	jaCriadosText.setFont(new Font("Arial Unicode MS", Font.PLAIN, 12));
	jaCriadosText.setBounds(127, 0, 133, 30);
	arquivoFront.getContentPane().add(jaCriadosText);
	
	textArea = new JTextField();
	textArea.setBounds(52, 200, 282, 20);
	arquivoFront.getContentPane().add(textArea);
	textArea.setColumns(10);
	
	JLabel nomeText = new JLabel("NOME");
	nomeText.setBounds(170, 181, 46, 14);
	arquivoFront.getContentPane().add(nomeText);
}

3 Respostas

T

Cadê o código da parte em que o JFrame é exibido com setVisible?

Está usando a thread do Swing? Se não, deveria. É algo como:

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        JFrame jframe = new JFrame();
        jframe.setVisible(true);
      }
    });
  }

Você pode criar seu JFrame em outro método normalmente, mas o ideal é que rode dentro dessa thread. Leia mais em: https://pt.stackoverflow.com/questions/2017/por-que-o-método-main-deve-despachar-a-criação-da-gui-para-a-edt-em-uma-aplicaçã

Abraço.

M

Coloquei porém mesmo assim o erro persistiu. Será se não pode ser alguma coisa do eclipse ou algo do tipo?

Fica assim quando executa

image

T
Solucao aceita

Não noto nada de errado com seu código, mas como você não postou o main(), fica difícil ter certeza.

Copiei seu código e rodei aqui sem problemas. Só mudei o nome da classe e adicionei o setVisible(). Veja como ficou:

import javax.swing.*;
import java.awt.Font;
import java.awt.Color;

public class Teste11{
	
	private JFrame arquivoFront;

	public Teste11() {
		initialize();
	}

	private void initialize() {
		
		arquivoFront = new JFrame();
		arquivoFront.setResizable(false);
		arquivoFront.setTitle("Criar Arquivo Novo");
		arquivoFront.getContentPane().setBackground(Color.WHITE);
		arquivoFront.setBounds(100, 100, 393, 312);
		arquivoFront.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		arquivoFront.getContentPane().setLayout(null);
		
		JLabel criarArquivoNovoText = new JLabel("Criar Arquivo Novo");
		criarArquivoNovoText.setHorizontalAlignment(SwingConstants.CENTER);
		criarArquivoNovoText.setFont(new Font("Arial Unicode MS", Font.PLAIN, 12));
		criarArquivoNovoText.setBounds(127, 140, 133, 30);
		arquivoFront.getContentPane().add(criarArquivoNovoText);
		
		JPanel panel = new JPanel();
		panel.setBounds(10, 34, 357, 51);
		arquivoFront.getContentPane().add(panel);
		panel.setLayout(null);
		
		JComboBox comboBox = new JComboBox();
		comboBox.setBounds(16, 11, 325, 26);
		panel.add(comboBox);
		
		JButton bntCriar = new JButton("Criar");
		bntCriar.setBounds(149, 249, 89, 23);
		arquivoFront.getContentPane().add(bntCriar);
		
		JLabel jaCriadosText = new JLabel("Criar Arquivo Novo");
		jaCriadosText.setHorizontalAlignment(SwingConstants.CENTER);
		jaCriadosText.setFont(new Font("Arial Unicode MS", Font.PLAIN, 12));
		jaCriadosText.setBounds(127, 0, 133, 30);
		arquivoFront.getContentPane().add(jaCriadosText);
		
		JTextField textArea = new JTextField();
		textArea.setBounds(52, 200, 282, 20);
		arquivoFront.getContentPane().add(textArea);
		textArea.setColumns(10);
		
		JLabel nomeText = new JLabel("NOME");
		nomeText.setBounds(170, 181, 46, 14);
		arquivoFront.getContentPane().add(nomeText);

		arquivoFront.setVisible(true);
	}

	public static void main(String args[]){
		SwingUtilities.invokeLater(new Runnable(){
			public void run(){
				Teste11 teste = new Teste11();
			}
		});
	}
}

PS: antes de achar que é problema com a ferramenta (Eclipse), tente resolver o problema e eliminar todas as outras possibilidades. Note que você pode compilar e rodar o programa pelo prompt de comando, o que eliminaria as dúvidas quanto ao Eclipse.

Abraço.

Criado 9 de janeiro de 2018
Ultima resposta 9 de jan. de 2018
Respostas 3
Participantes 2