Erro ao enviar valor a variável de outra classe

5 respostas
P_ulo_Jos

estou tendo um problema com o java no eclipse. Estou tentando adicionar o nome de usuário digitado na tela de login a um jLabel da minha tela principal
o login valida o usuário e esse nome de usuário é mostrado na tela principal.

eu faço assim: no final da minha classe da tela principal eu adiciono esta linha abaixo

public static javax.swing.JLabel lbl_usuario;

para que outras classes possam enxergarem este componente e na minha tela de login chamo o código abaixo para preencher a variável na minha principal

modulo_principal.lbl_usuario.setText(textfield_usuario.getText());

fica dando erro de java.lang.NullPointerException.

No Netbeans funcionou perfeitamente, mas não esta dando certo no eclipse.

5 Respostas

marcosharbs

você não deve estar instanciando a variável lbl_usuario
faça o seguinte:

public static javax.swing.JLabel lbl_usuario =  new javax.swing.JLabel();

Você copiou o código do netbenas par ao eclipse?
Se fez isso provavelmente não copiou a parte em que ele instancia essa variável.

ruben_m

tente passar por parametro do construtor o dado que precisas… vai funcionar sempre independentimente da IDE

Nicolas_Fernandes
ruben_m:
tente passar por parametro do construtor o dado que precisas... vai funcionar sempre independentimente da IDE

Exatamente. Na sua tela de login, ao instanciar a tela principal, passe via construtor o parâmetro que você quer:

GUIPrincipal guiPrincipal = new GUIPrincipal("Zé das Couves");
e...
public class GUIPrincipal extends JFrame {

    private JLabel labelNomeUsuario;

    public GUIPrincipal(String nomeUsuario) {

        String texto = String.format("Bem-vindo, %s!", nomeUsuario);        
        labelNomeUsuario = new JLabel(texto);
    }
}

Abraços!

P_ulo_Jos

Ainda não deu certo… vou deixar o código talvez vocês enxerguem o erro que ainda é de NullPointerException

LOGIN

package view;

import java.awt.EventQueue;

public class login extends JFrame {
	
	private JPanel contentPane;
	private JTextField tf_usuario;
	private JPasswordField tf_senha;
	
	conexao con_login = new conexao();

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					login frame = new login();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public login() {
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 356, 193);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lbl_usuario = new JLabel("Usu\u00E1rio:");
		lbl_usuario.setBounds(10, 53, 46, 14);
		contentPane.add(lbl_usuario);
		
		JLabel lbl_senha = new JLabel("Senha:");
		lbl_senha.setBounds(10, 78, 46, 14);
		contentPane.add(lbl_senha);
		
		tf_usuario = new JTextField();
		tf_usuario.setText("pabulojose");
		tf_usuario.setBounds(60, 50, 275, 20);
		contentPane.add(tf_usuario);
		tf_usuario.setColumns(10);
		
		tf_senha = new JPasswordField();
		tf_senha.setText("123456");
		tf_senha.setBounds(60, 78, 275, 20);
		contentPane.add(tf_senha);
		
		JButton btn_cancelar = new JButton("Cancelar");

		btn_cancelar.setBounds(233, 109, 102, 34);
		contentPane.add(btn_cancelar);
		
		JButton btn_entrar = new JButton("Entrar");

		btn_entrar.setBounds(120, 109, 102, 34);
		contentPane.add(btn_entrar);
		
		JLabel lblTelaDeLogin = new JLabel("TELA DE LOGIN");
		lblTelaDeLogin.setForeground(Color.RED);
		lblTelaDeLogin.setFont(new Font("Tahoma", Font.PLAIN, 20));
		lblTelaDeLogin.setBounds(50, 11, 146, 20);
		contentPane.add(lblTelaDeLogin);
		
			//INICIALIZA
		
		con_login.conecta();		
		
			//ACTION_PERFORMED
		
		btn_entrar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				valida_usuario();
			}
		});
		
		btn_cancelar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});		
	}
	
	private void valida_usuario()
	{
		try
		{
			String sql_valida = "select usuario, situacao from usuario where usuario like '" + tf_usuario.getText() + "' and senha like '" + tf_senha.getText() + "';";
			
			con_login.conecta();
			con_login.executaSQL(sql_valida);
			con_login.desconecta();
			
			if(tf_usuario.getText().equals("") || tf_senha.getText().equals(""))
			{	
				JOptionPane.showMessageDialog(null, "Os campos não podem estar vázios...");
			}
			else
			{
				if(con_login.resultset.first() && con_login.resultset.getString("situacao").equals("1"))
				{
					JOptionPane.showMessageDialog(null, "Bem Vindo ao SAE11");
					new modulo_principal().show();
						//modulo_principal.lbl_usuario.setText(tf_usuario.getText());
						new modulo_principal(tf_usuario.getText());
					dispose();
				}
				else
				{
					JOptionPane.showMessageDialog(null, "Usuário ou senha incorreto!");
				}				
			}
		}
		catch(Exception erro)
		{
			JOptionPane.showMessageDialog(null, "Erro no método valida_usuario..." + erro);
		}
	}
}

MODULO PRINCIPAL

package view;

import java.awt.BorderLayout;

public class modulo_principal extends JFrame {

	private JPanel contentPane;
	
	data_hora mostra_data = new data_hora();
	
		
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					modulo_principal frame = new modulo_principal();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public modulo_principal() {
		
		setTitle("M\u00D3DULO PRINCIPAL");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 1375, 727);
		
		JMenuBar menuBar = new JMenuBar();
		setJMenuBar(menuBar);
		
		JMenu mn_seguranca = new JMenu("Seguran\u00E7a");
		menuBar.add(mn_seguranca);
		
		JMenuItem mi_manutencao_usuario = new JMenuItem("Manuten\u00E7\u00E3o de usu\u00E1rio");
		mn_seguranca.add(mi_manutencao_usuario);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JToolBar toolBar = new JToolBar();
		toolBar.setAlignmentX(Component.RIGHT_ALIGNMENT);
		toolBar.setBounds(0, 639, 1369, 29);
		toolBar.setBorder(new EtchedBorder(EtchedBorder.RAISED, null, null));
		contentPane.add(toolBar);
		
		JLabel lbl_data = new JLabel("lbl_data");
		toolBar.add(lbl_data);
		
		JLabel lbl_usuario = new JLabel("lbl_usuario");
		toolBar.add(lbl_usuario);
		
			//Inicializa
		
			
				setExtendedState(MAXIMIZED_BOTH);
			
	}
	
		// Declaração de variáveis
	
	public static javax.swing.JLabel lbl_usuario;
	
	 public modulo_principal(String text) {
		lbl_usuario.setText(text);
	}


}
P_ulo_Jos

consegui resolver…
fiz como o marcosharbs disse e deu certo…
valew pela ajuda…

Criado 23 de agosto de 2011
Ultima resposta 26 de ago. de 2011
Respostas 5
Participantes 4