Acho que não é erro de compilação

5 respostas
Q

Boa Tarde à Todos,

Este código está compilando normalmente, mas não executa..aparece esta mensagem:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at classpr.ExibeCampos(classpr.java:462)
        at classpr.initComponents(classpr.java:82)
        at classpr.<init>(classpr.java:54)
        at classpr$1.run(classpr.java:335)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)EXECUTADO COM SUCESSO (tempo total: 2 segundos)

Eu não faço idéia do que pode ser...Alguém pode me ajudar???


import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import javax.swing.WindowConstants;

public class classpr extends JFrame implements ActionListener
{
    
    // Declaração de variáveis
    private JButton BAnterior, BAvanca10, BComfirmar, BFim, BInicio, BProximo, BSair, BVolta10;
    private JTextField FAssuntoP, FDataP, FDestinoP, FNumCI, FOrigemP, FSolicitante;
    private JLabel LAssuntoP, LDataP, LDestinoP, LNumCI, LOrigemP, LSolicitante;
    private JRadioButton REditar, RVisualizar, RImprimir;
    private ButtonGroup grupo;
    private JMenuBar BarraMenu;
    private JMenu MArquivo, MEditar, MSobre;
    private JMenuItem INovo, ISair, ICad;
    private JScrollPane SpaneP;
    private JTextArea TextareaP;
    private ImageIcon NOVO;
    ResultSet consulta;
    Statement InstrucaoSQL;
    // Fim da declaração de variáveis
    
    public classpr ()
    {
        
        super ("Titulo");
        
        initComponents ();
    }
    
    private void initComponents ()
    {
        
        String URL = "jdbc:odbc:Banco";
        
        //A conexão pode falhar
        try
        {
            
            // define o carregamento do driver para o banco de dados em Access
            Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
            
            // cria a conexão com a URL do banco de dados
            Connection ConexaoBanco = DriverManager.getConnection (URL);
            
            // cria um objeto para permitir a execução de uma instrução SQL
            InstrucaoSQL = ConexaoBanco.createStatement (ResultSet.TYPE_SCROLL_SENSITIVE,
                    ResultSet.CONCUR_READ_ONLY);
            
            consulta = InstrucaoSQL.executeQuery("SELECT * FROM cadastro2007");
            
             // posiciona o ResultSet no primeiro registro
            consulta.first();

            // executa o método ExibeCampos para atualizar os dados na GUI
            ExibeCampos();

            // informa ao usuário que a conexão foi bem sucedida
            msg ("A conexão do Banco de Dados foi bem sucedida...");
            
            //Fecha a conexão com o banco de dados
            ConexaoBanco.close ();
        }
        
        // trata erro se o driver para o banco de dados não for encontrado
        catch(ClassNotFoundException erro)
        {
            
            msg ("O driver para o banco de dados não foi encontrado!\n Informe o problema ao Administrador do sistema.");
            System.exit (0);
        }
        // trata erro se houver algum erro de conexão com o banco de dados
        catch(SQLException erro)
        {
            
            msg ("Não foi possível conectar com o banco de dados!\nInforme o problema ao Administrador do sistema.");
            System.exit (0);
        }
        
        FNumCI = new JTextField ();
        FDataP = new JTextField ();
        LNumCI = new JLabel ();
        LSolicitante = new JLabel ();
        SpaneP = new JScrollPane ();
        TextareaP = new JTextArea ();
        LDataP = new JLabel ();
        FSolicitante = new JTextField ();
        BAnterior = new JButton ();
        BProximo = new JButton ();
        LAssuntoP = new JLabel ();
        LOrigemP = new JLabel ();
        LDestinoP = new JLabel ();
        FAssuntoP = new JTextField ();
        FOrigemP = new JTextField ();
        FDestinoP = new JTextField ();
        BInicio = new JButton ();
        BFim = new JButton ();
        BAvanca10 = new JButton ();
        BVolta10 = new JButton ();
        RVisualizar = new JRadioButton ();
        REditar = new JRadioButton ();
        RImprimir = new JRadioButton ();
        grupo = new ButtonGroup ();
        BComfirmar = new JButton ();
        BSair = new JButton ();
        BarraMenu = new JMenuBar ();
        MArquivo = new JMenu ("Arquivo");
        MEditar = new JMenu ("Editar");
        MSobre = new JMenu ("Sobre");
        NOVO = new ImageIcon ("NOVO.gif");
        INovo = new JMenuItem ("Nova Consulta", NOVO);
        ISair = new JMenuItem ("Sair do Sistema");
        ICad = new JMenuItem ("Cadastrar CI");
        
        
        getContentPane ().setLayout (null);
        getContentPane ().setBackground (new Color (230,230,225));
        setDefaultCloseOperation (WindowConstants.EXIT_ON_CLOSE);
        setSize (773,455);
        setResizable (false);
        setLocation (150,100);
        
        LNumCI.setText ("Número :");
        LNumCI.setFont (new Font ("Verdana", Font.BOLD|Font.PLAIN, 11));
        getContentPane ().add (LNumCI);
        LNumCI.setBounds (10, 10, 80, 14);
        
        FNumCI.setBackground (Color.WHITE);
        FNumCI.setFont (new Font ("Verdana", Font.BOLD|Font.PLAIN, 12));
        FNumCI.setForeground (Color.BLUE);
        FNumCI.setEditable (false);
        getContentPane ().add (FNumCI);
        FNumCI.setBounds (10, 30, 90, 20);
        
        LDataP.setText ("Data :");
        LDataP.setFont (new Font ("Verdana", Font.BOLD|Font.PLAIN, 11));
        getContentPane ().add (LDataP);
        LDataP.setBounds (120, 10, 40, 14);
        
        FDataP.setBackground (Color.WHITE);
        FDataP.setFont (new Font ("Verdana", Font.BOLD|Font.PLAIN, 12));
        FDataP.setEditable (false);
        getContentPane ().add (FDataP);
        FDataP.setBounds (120, 30, 100, 20);
        
        LSolicitante.setText ("Solicitante :");
        LSolicitante.setFont (new Font ("Verdana", Font.BOLD|Font.PLAIN, 11));
        getContentPane ().add (LSolicitante);
        LSolicitante.setBounds (10, 60, 90, 14);
        
        FSolicitante.setBackground (Color.WHITE);
        FSolicitante.setFont (new Font ("Verdana", Font.BOLD|Font.PLAIN, 12));
        FSolicitante.setEditable (false);
        getContentPane ().add (FSolicitante);
        FSolicitante.setBounds (10, 80, 200, 20);
        
        LAssuntoP.setText ("Assunto :");
        LAssuntoP.setFont (new Font ("Verdana", Font.BOLD|Font.PLAIN, 11));
        getContentPane ().add (LAssuntoP);
        LAssuntoP.setBounds (10, 110, 66, 14);
        
        FAssuntoP.setBackground (Color.WHITE);
        FAssuntoP.setFont (new Font ("Verdana", Font.BOLD|Font.PLAIN, 12));
        FAssuntoP.setEditable (false);
        getContentPane ().add (FAssuntoP);
        FAssuntoP.setBounds (10, 130, 200, 20);
        
        LOrigemP.setText ("Dpto. de Origem :");
        LOrigemP.setFont (new Font ("Verdana", Font.BOLD|Font.PLAIN, 11));
        getContentPane ().add (LOrigemP);
        LOrigemP.setBounds (10, 160, 116, 14);
        
        FOrigemP.setBackground (Color.WHITE);
        FOrigemP.setFont (new Font ("Verdana", Font.BOLD|Font.PLAIN, 12));
        FOrigemP.setEditable (false);
        getContentPane ().add (FOrigemP);
        FOrigemP.setBounds (10, 180, 200, 20);
        
        LDestinoP.setText ("Dpto. de Destino :");
        LDestinoP.setFont (new Font ("Verdana", Font.BOLD|Font.PLAIN, 11));
        getContentPane ().add (LDestinoP);
        LDestinoP.setBounds (10, 210, 120, 14);
        
        FDestinoP.setBackground (Color.WHITE);
        FDestinoP.setFont (new Font ("Verdana", Font.BOLD|Font.PLAIN, 12));
        FDestinoP.setEditable (false);
        getContentPane ().add (FDestinoP);
        FDestinoP.setBounds (10, 230, 200, 20);
        
        TextareaP.setColumns (20);
        TextareaP.setRows (5);
        TextareaP.setEditable (false);
        SpaneP.setViewportView (TextareaP);
        getContentPane ().add (SpaneP);
        SpaneP.setBounds (260, 20, 490, 300);
        
        RVisualizar.setText ("Visualizar Relatório");
        RVisualizar.setFont (new Font ("Verdana", Font.BOLD|Font.PLAIN, 10));
        RVisualizar.setSelected (true);
        RVisualizar.setBackground (new Color (230,230,225));
        RVisualizar.setBorder (BorderFactory.createEmptyBorder (0, 0, 0, 0));
        RVisualizar.setMargin (new Insets (0, 0, 0, 0));
        getContentPane ().add (RVisualizar);
        RVisualizar.setBounds (15, 270, 130, 15);
        
        REditar.setText ("Editar Relatório");
        REditar.setFont (new Font ("Verdana", Font.BOLD|Font.PLAIN, 10));
        REditar.setBackground (new Color (230,230,225));
        REditar.setBorder (BorderFactory.createEmptyBorder (0, 0, 0, 0));
        REditar.setMargin (new Insets (0, 0, 0, 0));
        getContentPane ().add (REditar);
        REditar.setBounds (15, 295, 110, 15);
        
        RImprimir.setText ("Imprimir Relatório");
        RImprimir.setFont (new Font ("Verdana", Font.BOLD|Font.PLAIN, 10));
        RImprimir.setBackground (new Color (230,230,225));
        RImprimir.setBorder (BorderFactory.createEmptyBorder (0 ,0, 0, 0));
        RImprimir.setMargin (new Insets (0, 0, 0, 0));
        getContentPane ().add (RImprimir);
        RImprimir.setBounds (15, 320, 125, 15);
        
        grupo.add (RVisualizar);
        grupo.add (REditar);
        grupo.add (RImprimir);
        
        BAnterior.setText ("<<<");
        BAnterior.setFont (new Font ("Arial", Font.BOLD|Font.PLAIN, 11));
        getContentPane ().add (BAnterior);
        BAnterior.setBounds (265, 360, 55, 20);
        
        BProximo.setText (">>>");
        BProximo.setFont (new Font ("Arial", Font.BOLD|Font.PLAIN, 11));
        getContentPane ().add (BProximo);
        BProximo.setBounds (335, 360, 55, 20);
        
        BInicio.setText ("INÍCIO");
        BInicio.setFont (new Font ("Arial", Font.BOLD|Font.PLAIN, 11));
        getContentPane ().add (BInicio);
        BInicio.setBounds (410, 360, 70, 20);
        
        BFim.setText ("FIM");
        BFim.setFont (new Font ("Arial", Font.BOLD|Font.PLAIN, 11));
        getContentPane ().add (BFim);
        BFim.setBounds (480, 360, 70, 20);
        
        BVolta10.setText ("VOLTA 10");
        BVolta10.setFont (new Font ("Arial", Font.BOLD|Font.PLAIN, 11));
        getContentPane ().add (BVolta10);
        BVolta10.setBounds (560, 360, 90, 20);
        
        BAvanca10.setText ("AVANÇA 10");
        BAvanca10.setFont (new Font ("Arial", Font.BOLD|Font.PLAIN, 11));
        getContentPane ().add (BAvanca10);
        BAvanca10.setBounds (650, 360, 89, 20);
        
        BComfirmar.setText ("ACESSAR");
        BComfirmar.setFont (new Font ("Arial", Font.BOLD|Font.PLAIN, 11));
        BComfirmar.addActionListener (this);
        getContentPane ().add (BComfirmar);
        BComfirmar.setBounds (10, 360, 90, 20);
        
        BSair.setText ("SAIR");
        BSair.setFont (new Font ("Arial", Font.BOLD|Font.PLAIN, 11));
        BSair.addActionListener (this);
        getContentPane ().add (BSair);
        BSair.setBounds (110, 360, 90, 20);
        
        MArquivo.setMnemonic (KeyEvent.VK_A);
        MArquivo.setFont (new Font ("Verdana", Font.BOLD, 11));
        BarraMenu.add (MArquivo);
        
        INovo.setFont (new Font ("Verdana", Font.BOLD, 11));
        INovo.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_N, ActionEvent.CTRL_MASK));
        INovo.addActionListener (this);
        
        ISair.setFont (new Font ("Verdana", Font.BOLD, 11));
        ISair.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_S, ActionEvent.CTRL_MASK));
        ISair.addActionListener (this);
        
        ICad.setFont (new Font ("Verdana", Font.BOLD, 11));
        ICad.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_D, ActionEvent.CTRL_MASK));
        ICad.addActionListener (this);
        
        MEditar.setMnemonic (KeyEvent.VK_E);
        MEditar.setFont (new Font ("Verdana", Font.BOLD, 11));
        BarraMenu.add (MEditar);
        
        MSobre.setFont (new Font ("Verdana", Font.BOLD, 11));
        BarraMenu.add (MSobre);
        
        MArquivo.add (INovo);
        MArquivo.addSeparator ();
        MArquivo.add (ISair);
        MArquivo.add (ISair);
        setJMenuBar (BarraMenu);
        MEditar.add (ICad);
    }
        
    public static void main (String args[])
    {
        EventQueue.invokeLater (new Runnable ()
        {
            public void run ()
            {
                new classpr ().setVisible (true);
            }
        });
    }
    
    public void actionPerformed (ActionEvent e)
    {
        
        if(e.getSource () == INovo)
        {
            int selectedOption = JOptionPane.showConfirmDialog (this,"As informações serão perdidas\nVocê tem certeza?", "Atenção", JOptionPane.YES_NO_OPTION);
            
            if(selectedOption == JOptionPane.YES_OPTION)
            {
                
                FNumCI.setText ("");
                FSolicitante.setText ("");
                FDataP.setText ("");
                FAssuntoP.setText ("");
                FOrigemP.setText ("");
                FDestinoP.setText ("");
                TextareaP.setText ("");
                
            }
            else if(selectedOption == JOptionPane.NO_OPTION)
            {
                return;
            }
        }
        
        if(e.getSource () == ISair)
        {
            System.exit (0);
            
        }
        if(e.getSource () == ICad)
        {
            msg("teste");
        }
        if(e.getSource () == BSair)
        {
            System.exit (0);
        }
        
        if(e.getSource () == BComfirmar)
        {
            msg ("Mensagem Teste");
        }
        
        
        // a navegação pode ser mal sucedida
        try 
        {
            // verifica se foi clicado no botão bPrimeiro
            if (e.getSource()==BInicio)
                // retrocede o ResultSet para o primeiro registro
                consulta.first();

            // verifica se foi clicado no botão bProximo
            if (e.getSource()==BProximo)
                // avança o ResultSet para o próximo registro
                consulta.next();
            
            // verifica se foi clicado no botão bAnterior
            if (e.getSource()==BAnterior)
                // retrocede o ResultSet para o registro anterior
                consulta.previous();

            // verifica se foi clicado no botão bUltimo
            if (e.getSource()==BFim)
                // avança o ResultSet para o último registro
                consulta.last();

            // verifica se foi clicado no botão bAvanca10
            if (e.getSource()==BAvanca10)
                // avança o ResultSet em 10 registros
                consulta.relative(10);

            // verifica se foi clicado no botão bRetrocede10
            if (e.getSource()==BVolta10)
                // retrocede o ResultSet em 10 registros
                consulta.relative(-10);

            // executa o método ExibeCampos para atualizar os dados na GUI
            ExibeCampos();
            
        } // fim do bloco try
        
        // não faz tratamento de erros de navegação de registros
        catch(SQLException ex) {}
    }
    
    // Método para atualizar os dados na GUI
    public void ExibeCampos() 
    {
        // cria o atributo valorCampos para indicar BOF ou EOF
        String valorCampos = "";
        // a cópia dos registros pode ser mal sucedida
        try 
        {
            // verifica se está no início do ResultSet
            if (consulta.isBeforeFirst())
                // atribui a valorCampos o valor "BOF"
                valorCampos="BOF";

            // verifica se está no início do ResultSet
            if (consulta.isAfterLast())
                // atribui a valorCampos o valor "EOF"
                valorCampos="EOF";

            // exibe BOF ou EOF nos campos da GUI
            if (valorCampos.equals("BOF") || valorCampos.equals("EOF"))
            {
                FNumCI.setText(valorCampos);
                FDataP.setText(valorCampos);
                FSolicitante.setText(valorCampos);
                FAssuntoP.setText(valorCampos);
                FDestinoP.setText(valorCampos);
                FOrigemP.setText(valorCampos);
                TextareaP.setText(valorCampos);
            }
            // exibe os campos do registro atualmente posicionado no ResultSet
            else
            {
                FNumCI.setText(consulta.getString("id_reg"));
                FSolicitante.setText(consulta.getString("id_nom"));
                FDestinoP.setText(consulta.getString("id_dest"));
                FOrigemP.setText(consulta.getString("id_dpto"));
                FDataP.setText(""+consulta.getDate("id_data"));
                //TextareaP.setText(consulta.getString("Fianopro"));
                //txtTempoDuracao.setText(consulta.getString("Fitemdur"));
            }
        } // fim do bloco try 

        // não faz tratamento de erros de cópia de registros
        catch(SQLException erro) {}
    
    } // fim do método ExibeCampos

    
    public static void msg (String men)
    {
        
        JOptionPane.showMessageDialog (null, men, "Mensagem Teste", JOptionPane.INFORMATION_MESSAGE);
    } 
}

[size=“11”][color=“red”]* Editado: Lembre-se de utilizar BBCode em seus códigos - Carneiro[/color][/size] :joia:

5 Respostas

Y

Boa tarde:

Seguinte:

Eu testei seu codigo funcionou normalmente(compilou e executou).

Utilizei: jdk1.5.0_10.

Detalhe melhor em que momento ocorre o erro e em qual ambiente esta utilizando.

BrunoBastosPJ

Concerteza não é erro de compilação!!!

java.lang.NullPointerException <<< essa exception é do tipo RuntimeException, e ela é lançada apenas em tempo de execução pela máquina virtual. O porque esta acontecendo essa exception é porque você está tentando chamar um método em uma referência nula! Vou mostrar onde isso acontece para você entender melhor

public static void main(String[] args) { String str = null; str.indexOf(0); }

roda esse código na sua máquina e você vai ver que ele vai compilar… e vai lançar uma NullPointerException

Agora basta achar onde no seu código isso está acontecendo!

J

Faz debug kra, e verifica qual objeto tá null. O problema é que você esta tentando trabalhar com um objeto que não está referenciando nada…

Abraço, JOhn.

Q

Valew Galera…Vous testar o código…flw

Q

Muito Obrigado pela dica, eu testei e agora está funcionando…Agradeço a todos …

Até mais…

Criado 25 de janeiro de 2007
Ultima resposta 30 de jan. de 2007
Respostas 5
Participantes 4