Erro de classe principal main no eclipse, acredito eu

2 respostas
M

OLa pessoal sou novo na área estou assistindo umas vídeos aulas, para criar formulários, acontece que criei um e deu certo. Agora que crirei outro dentro do mesmo pacote fica aparecendo o erro abaixo, sendo que não mostra erro algum quando eu estou no eclipse.
pesquisando aqui no site falam que deve instanciar, outros falam que é classe principal, tem como alguem me ajudar, ja estou dois dias com a mesma pane.

veja o aviso de erro, vou mostrar onde estão as linhas que ele fala do erro:

Exception in thread main java.lang.NullPointerException

at Forms.Frm_calculadora.<init>(Frm_calculadora.java:70)

at Forms.Frm_calculadora.main(Frm_calculadora.java:115)
package Forms;
import java.awt.*;
import java.awt.Color;
import java.awt.event.*;
import javax.swing.*;


public class  Frm_calculadora extends JFrame implements ActionListener
{
		//criando os objetos
		JLabel lb_logo, lb_titulo, lb_autor;
		JButton bt_somar, bt_subtrair, bt_multiplicar, bt_dividir, bt_sair, bt_limpar;
		JTextField tf_num1, tf_num2, tf_resultado;
		JMenuBar barra_menu;
		JMenu menu_calculadora;
		JMenuItem mi_somar, mi_dividir, mi_multiplicar, mi_subtrair, mi_sair, mi_limpar;
		ImageIcon logo;
		//JFrame obj_calc;

	public  Frm_calculadora()  						//metodo construtor
	{ 
		setTitle("::. CalcFácil 1.0 .::");
		setSize(500,300);							// define tamanho
		setLocation(100,50);   						// posição
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //fecha todas operações
		setResizable(false); 						// não deixa aumentar o form
		getContentPane()	.setBackground(new Color(200,232,238)); // cor de fundo
		
		
		// instanciando os objetos
		logo 			= 	new ImageIcon("D:/Estudos/EAGS/EAGS-2012/SIN/LPBD/OO/EXERCICIOS/MyQuestionsInit/logo01.gif");
		lb_titulo 		= 	new JLabel("Calculando Fácil - 1.0"); // instancia o titulo
		lb_logo			= 	new JLabel(logo);
		lb_autor		= 	new JLabel("Marcos Oliveira - Mulequim");
		
		//manipulação de menus e inserção
		barra_menu		= 	new JMenuBar();
		setJMenuBar(barra_menu);
		menu_calculadora=	new JMenu("Arquivo");
		mi_limpar		=	new JMenuItem("Limpar");
		mi_multiplicar	=	new JMenuItem("X");
		mi_somar		=	new JMenuItem("+");
		mi_subtrair		=	new JMenuItem("-");
		mi_sair			=	new JMenuItem("Sair");
		mi_dividir	    =	new JMenuItem("/");
		
		//adicionando ao menu_barra
		barra_menu			.add(menu_calculadora);
		menu_calculadora	.add(mi_somar);
		menu_calculadora	.add(mi_subtrair);
		menu_calculadora	.add(mi_dividir);
		menu_calculadora	.add(mi_multiplicar);
		menu_calculadora	.add(mi_limpar);
		menu_calculadora	.add(mi_sair);


		
		//posicionando componentes na tela
		//getContentPane()	.setLayout(new FlowLayout(FlowLayout.LEFT)); //posição dos objetos na tela
		//objeto	.setBounds(posição da coluna, posição da linha, comprimentodalinha, alturadacoluna)

		getContentPane()	.setLayout(null); 				//para as configuraçãoes abaixo vigorarem
		
		//posição labels
		lb_titulo			.setBounds(20, 210, 300, 20);
		lb_logo				.setBounds(11, 5, 770, 190);
		lb_autor			.setBounds(11, 5, 770, 190);

		//posição botões
		bt_somar			.setBounds(20, 210, 300, 20);
		bt_dividir			.setBounds(11, 5, 770, 190);
		bt_subtrair			.setBounds(11, 5, 770, 190);
		bt_multiplicar		.setBounds(11, 5, 770, 190);
		bt_limpar			.setBounds(11, 5, 770, 190);
		bt_sair				.setBounds(11, 5, 770, 190);

		//posição textfiels
		tf_num1				.setBounds(20, 210, 300, 20);
		tf_num2				.setBounds(20, 210, 300, 20);
		tf_resultado		.setBounds(20, 210, 300, 20);
			
		
		//registro de objetos que vão sofre ação
		//mi_sair			.addActionListener(this);
		
		//chmando os objetos - labels
		getContentPane()	.add(lb_logo); // chamando o obejto para o painel
		getContentPane()	.add(lb_autor); // chamando o obejto para o painel
		getContentPane()	.add(lb_titulo); // chamando o obejto para o painel

		//chmando os objetos - botões
		getContentPane()	.add(bt_somar); // chamando o obejto para o painel
		getContentPane()	.add(bt_subtrair); // chamando o obejto para o painel
		getContentPane()	.add(bt_dividir); // chamando o obejto para o painel
		getContentPane()	.add(bt_multiplicar); // chamando o obejto para o painel
		getContentPane()	.add(bt_sair); // chamando o obejto para o painel
		getContentPane()	.add(bt_limpar); // chamando o obejto para o painel

		//chmando os objetos - JTextField
		getContentPane()	.add(tf_num1); // chamando o obejto para o painel
		getContentPane()	.add(tf_num2); // chamando o obejto para o painel
		getContentPane()	.add(tf_resultado); // chamando o obejto para o painel

		//manipulando cores
		lb_titulo			.setForeground(Color.BLUE);
		
		//manipulando tamnho e estilo
		lb_titulo  			.setFont(new Font("Arial", Font.BOLD,20));
		
	}
	
	public  static void main (String[] args)
	{
	
		JFrame obj_calc = new Frm_calculadora();
		obj_calc.setVisible(true);  // visibilidade
		//JOptionPane.showMessageDialog(null, "Clique no menu sair");
	
	}
	
	public void actionPerformed(ActionEvent e)
	{
		if(e.getSource() == mi_sair)
			//JOptionPane.showMessageDialog(null, "Clique no menu sair");
			System.exit(0);
	}
	
}

Agradeço a boa vontade de quem poder compartilhar esse conhecimento comigo.

2 Respostas

gaulix

Tu faz isso:

JButton bt_somar, ...;

mas não constrói o botão, então você não pode manipular esse objeto nulo… Tens que criar o botão, fazendo assim:

JButton bt_somar = new JButton();
Ruttmann

Justamente o que o colega citou acima, e justamente na linha 70 do teu programa que ocorre o erro…

Você tem que instanciar todos os botões da sua aplicação.

Ali você só declarou eles, teve a idéia mas não concretizou!

:wink:

Criado 1 de novembro de 2012
Ultima resposta 1 de nov. de 2012
Respostas 2
Participantes 3