Fiz o seguinte programa com BD (Vou lista apenas as classes relevantes, caso queiram que eu poste algo mais é so pedir):
CLASSE TELA:
package Visual;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import Controle.*;
public class TelaCliente
{
private JFrame tela;
private JLabel Lcodigo;
private JTextField Ccodigo;
private JLabel Lnome;
private JTextField Cnome;
private JLabel Lendereco;
private JTextField Cendereco;
private JLabel Ltel_cel;
private JTextField Ctel_cel;
private JTable tabela;
private JButton Bcadastrar;
private JButton Balterar;
private JButton Bconsultar;
private JButton Bexcluir;
private JButton Bsair;
private JPanel painel1;
private JPanel painel2;
private JScrollPane sPainel;
public TelaCliente()
{
tela = new JFrame("CADASTRO DE CLIENTES");
Lcodigo = new JLabel("Codigo");
Ccodigo = new JTextField(5);
Lnome = new JLabel("Nome");
Cnome = new JTextField(50);
Lendereco = new JLabel("Endereço");
Cendereco = new JTextField(50);
Ltel_cel = new JLabel("Tel/Cel");
Ctel_cel = new JTextField(20);
String [] titulo = {"Codigo","Nome","Endereço","Tel/Cel"};
tabela = new JTable (new DefaultTableModel(null,titulo));
tabela.setPreferredScrollableViewportSize(new Dimension(800,150));
Bcadastrar = new JButton ("Cadastrar");
Balterar = new JButton ("Alterar");
Bexcluir = new JButton ("Excluir");
Bconsultar = new JButton ("Consultar");
Bsair = new JButton ("Sair");
Bcadastrar.addActionListener(new ControleCliente(tela));
Balterar.addActionListener(new ControleCliente(tela));
Bexcluir.addActionListener(new ControleCliente(tela));
Bconsultar.addActionListener(new ControleCliente(tela));
Bsair.addActionListener(new ControleCliente(tela));
painel1 = new JPanel();
painel1.setLayout(new GridBagLayout());
tela.getContentPane().add(painel1);
painel2 = new JPanel();
painel2.setLayout(new GridLayout(1,5));
painel2.add(Bcadastrar);
painel2.add(Balterar);
painel2.add(Bexcluir);
painel2.add(Bconsultar);
painel2.add(Bsair);
sPainel = new JScrollPane (tabela);
GridBagConstraints c;
c = new GridBagConstraints();
c.insets = new Insets(5,10,5,5);
c.anchor = GridBagConstraints.NORTHWEST;
c.gridx = 0;
c.gridy = 0;
painel1.add(Lcodigo,c);
c.gridx = 1;
c.gridy = 0;
painel1.add(Ccodigo,c);
c.gridx = 0;
c.gridy = 1;
painel1.add(Lnome,c);
c.gridx = 1;
c.gridy = 1;
painel1.add(Cnome,c);
c.gridx = 0;
c.gridy = 2;
painel1.add(Lendereco,c);
c.gridx = 1;
c.gridy = 2;
painel1.add(Cendereco,c);
c.gridx = 0;
c.gridy = 3;
painel1.add(Ltel_cel,c);
c.gridx = 1;
c.gridy = 3;
painel1.add(Ctel_cel,c);
c.gridx = 0;
c.gridy = 4;
c.gridwidth = 2; //2 eh o numero de colunas agrupadas
c.anchor = GridBagConstraints.CENTER;
painel1.add(sPainel,c);
c.gridx = 0;
c.gridy = 5;
painel1.add(painel2,c);
tela.setSize(900,400);
tela.setLocation(65,150);
tela.setVisible(true);
}
public JFrame getTela()
{
return tela;
}
public void setTela(JFrame tela)
{
this.tela = tela;
}
}
-------------------------------------------------------------------------------------------
CLASSE DE CONEXÃO COM O BANCO DE DADOS:
package Modelo;
import java.sql.*;
import java.util.Vector;
public class DAOCliente
{
private Connection c;
private PreparedStatement PS;
private ResultSet R;
public DAOCliente()
{
try
{
Class.forName("org.postgresql.Driver");
c = DriverManager.getConnection("jdbc:postgresql:bancoVendas", "postgres", "postgres");
PS = null;
R = null;
}
catch(Exception e)
{
}
}
public Vector consultarTodos()
{
Vector V = new Vector();
try{
PS = c.prepareStatement("SELECT * FROM cliente");
R = PS.executeQuery();
while(R.next())
{
Cliente C = new Cliente();
C.setCodigo(R.getString("Codigo"));
C.setNome(R.getString("Nome"));
C.setEndereco(R.getString("Endereco"));
C.setTel_cel(R.getString("Tel_Cel"));
V.add(C);
}
return V;
}
catch(Exception e)
{
System.out.println("" + e);
return null;
}
}
public void cadastrar (Cliente C)
{
try
{
PS = c.prepareStatement("INSERT INTO cliente VALUES(?,?,?,?)");
PS.setString(1,C.getCodigo());
PS.setString(2,C.getNome());
PS.setString(3,C.getEndereco());
PS.setString(4,C.getTel_cel());
PS.executeUpdate();
//executar SQL
}
catch(Exception e)
{
}
}
public void alterar(Cliente C)
{
try
{
PS = c.prepareStatement("UPDATE cliente SET nome=?,endereco=?,tel_cel=? WHERE codigo=?");
PS.setString(1,C.getNome());
PS.setString(2,C.getEndereco());
PS.setString(3,C.getTel_cel());
PS.setString(4,C.getCodigo());
PS.executeUpdate();
}
catch (Exception e)
{
}
}
public void excluir (Cliente C)
{
try{
PS = c.prepareStatement("DELETE FROM cliente WHERE codigo=?");
PS.setString(1,C.getCodigo());
PS.executeUpdate();
}
catch(Exception e){
}
}
public Cliente consultar (Cliente C)
{
try{
PS = c.prepareStatement("SELECT * FROM cliente WHERE codigo=?");
PS.setString(1,C.getCodigo());
R = PS.executeQuery();
if(R.next())
{
C.setCodigo(R.getString("Codigo"));
C.setNome(R.getString("Nome"));
C.setEndereco(R.getString("Endereco"));
C.setTel_cel(R.getString("Tel_Cel"));
return C;
}
else
return null;
}
catch(Exception e)
{
return null;
}
}
public void finalize()
{
//metodo automatico para fechamento de pendencias.
try
{
PS.close();
c.close();
}
catch(Exception e)
{
}
}
}
---------------------------------------------------------------------------------------
CLASSE CONTROLE DO CLIENTE:
package Controle;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
import javax.swing.*;
import Modelo.*;
import Visual.*;
public class ControleCliente implements ActionListener
{
private JFrame tela;
public ControleCliente(JFrame tela)
{
this.tela = tela;
}
public ControleCliente()
{
}
public void actionPerformed(ActionEvent e)
{
JPanel painel = (JPanel)tela.getContentPane().getComponent(0);
JScrollPane sPainel = (JScrollPane)painel.getComponent(8);
JViewport JV = (JViewport)sPainel.getComponent(0);
JTable tabela = (JTable)JV.getComponent(0);
DefaultTableModel DTM = (DefaultTableModel)tabela.getModel();
Cliente C = new Cliente();
DAOCliente DAO = new DAOCliente();
JTextField codigo = (JTextField)painel.getComponent(1);
JTextField nome = (JTextField)painel.getComponent(3);
JTextField endereco = (JTextField)painel.getComponent(5);
JTextField tel_cel = (JTextField)painel.getComponent(7);
C.setCodigo(codigo.getText());
C.setNome(nome.getText());
C.setEndereco(endereco.getText());
C.setTel_cel(tel_cel.getText());
if(e.getActionCommand().equals("Cadastrar"))
{
DTM.addRow(new String[]{C.getCodigo(),C.getNome(),C.getEndereco(),C.getTel_cel()});
DAO.cadastrar(C);
JOptionPane.showMessageDialog(null,"Cadastrado Confirmado");
codigo.setText("");
nome.setText("");
endereco.setText("");
tel_cel.setText("");
}
if (e.getActionCommand().equals("Alterar"))
{
for(int i=0;i<DTM.getRowCount();i++)
{
if(DTM.getValueAt(i,1).equals(C.getCodigo()))
{
DAO.alterar(C);
DTM.setValueAt(C.getNome(),i,1);
DTM.setValueAt(C.getEndereco(),i,2);
DTM.setValueAt(C.getTel_cel(),i,3);
JOptionPane.showMessageDialog(null,"Alteração concluída");
}
else
{
JOptionPane.showMessageDialog(null,"Alteração Código inexistente");
}
}
}
if(e.getActionCommand().equals("Excluir")){
boolean achou=false; int pos=0;
DAO.excluir(C);
for(int i=0;i<DTM.getRowCount();i++)
{
if(DTM.getValueAt(0,i).equals(C.getCodigo())){
pos=i;
achou=true;
}
if(achou)
{
DTM.removeRow(pos);
break;
}
}
JOptionPane.showMessageDialog(null,"Cadastro Excluído");
codigo.setText("");
nome.setText("");
endereco.setText("");
tel_cel.setText("");
}
if(e.getActionCommand().equals("Consultar"))
{
C=DAO.consultar(C);
if(C == null)
{
JOptionPane.showMessageDialog(null,"Cadastro Inexistente");
}
else
{
codigo.setText(C.getCodigo());
nome.setText(C.getNome());
endereco.setText(C.getEndereco());
tel_cel.setText(C.getTel_cel());
JOptionPane.showMessageDialog(null,"Consulta efetuada com sucesso");
DTM.addRow(new String[]{C.getCodigo(),C.getNome(),C.getEndereco(),C.getTel_cel()});
}
}
if(e.getActionCommand().equals("Sair"))
{
tela.dispose();
}
}
}
--------------------------------------------------------------------------------------
CLASSE PARA CONTROLAR A TELA PRINCIPAL:
package Controle;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import java.util.*;
import Visual.*;
import Modelo.*;
import Controle.ControleCliente;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
import javax.swing.*;
import java.lang.*;
public class ControleTelaInicial implements ActionListener
{
private JFrame tela;
public ControleTelaInicial(JFrame tela)
{
this.tela = tela;
}
public ControleTelaInicial()
{
}
public void actionPerformed (ActionEvent e)
{
if (e.getActionCommand().equals("Cliente"))
{
TelaCliente TC = new TelaCliente();
DAOCliente DAO = new DAOCliente();
Vector V = DAO.consultarTodos();
JPanel painel = (JPanel)tela.getContentPane().getComponent(0);
JScrollPane sPainel = (JScrollPane)painel.getComponent(8);
JViewport JV = (JViewport)sPainel.getComponent(0);
JTable tabela = (JTable)JV.getComponent(0);
DefaultTableModel DTM = (DefaultTableModel)tabela.getModel();
for (int i=0; i><V.size(); i++)
{
Cliente C = (Cliente)V.get(i);
DTM.setValueAt(C.getCodigo(), 1, i);
DTM.setValueAt(C.getNome(), 2, i);
DTM.setValueAt(C.getEndereco(), 3, i);
DTM.setValueAt(C.getTel_cel(), 4, i);
}
}
if (e.getActionCommand().equals("Fornecedor"))
{
TelaFornecedor TF = new TelaFornecedor();
}
if (e.getActionCommand().equals("Produto"))
{
TelaProduto TP = new TelaProduto();
}
if (e.getActionCommand().equals("Sair"))
{
System.exit(0);
}
}
}
-----------------------------------------------------------------------------------------------
O programa funciona corretamente, Adiciona, excluir, altera e busca dados no banco de dados.
Mais não consigo exibir o conteúdo que está no banco na tabela que a tela exibe, o que posso estar fazendo errado?
Inseri os comandos necessários na classe ControleTelaInicial mais quando execulto além de não listar os dados aparece o seguinte erro no console:
Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at Controle.ControleTelaInicial.actionPerformed(ControleTelaInicial.java:40)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Não entendo muito de java, estou aprendendo agora, PLEASE! alguém pode me ajudar?
Obrigado.
Se quizer me add, MSN: [email removido]
>