Pessoal,
Será que alguém pode me ajudar, pois estou começando agora e estou fazendo uma Agenda de nomes, onde clico num botão com a letra e me traz os nomes e dados completos da agenda, porém ao clicar no botão abre a janela, mas não atualiza os JTextField.
Estes são os meus códigos:
public class Consultar extends Janela
{
JPanel indice;
JButton teste;
AgendaDAO agDAO;
AgendaDTO agDTO;
public Consultar()
{
janelaConsultar();
montaIndice();
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent we)
{
JOptionPane.showMessageDialog(null,"A aplicação será encerrada!");
System.exit(0);
}
});
teste.addMouseListener(new Testar());
}
//metodo para contruir janela
public void janelaConsultar()
{
setTitle("Consulta nomes");
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
public void montaIndice()
{
indice = new JPanel();
teste = new JButton("teste");
indice.add(teste);
getContentPane().add(indice,BorderLayout.CENTER);
setVisible(true);
}
class Testar implements MouseListener
{
public void mouseClicked(MouseEvent me)
{
if(me.getSource() == teste)
{
try
{
agDAO = new AgendaDAO();
agDAO.retrieveAgenda();
}
catch(Exception ex)
{
JOptionPane.showMessageDialog(null,"Não foi possível consultar nomes!");
}
}
}
public void mouseEntered(MouseEvent arg0) {}
public void mouseExited(MouseEvent arg0) {}
public void mousePressed(MouseEvent arg0) {}
public void mouseReleased(MouseEvent arg0) {}
}
//classe de evento implementando o evento MouserListener
}
//classe externa cria os BEANs
public class AgendaDTO implements Serializable
{
//atributos
private String nome;
private String end;
private String foneres;
private String fonecel;
private String fonecom;
private String email;
/*
* cria um objeto agenda:
* @param Nome = nome da pessoa do cadastro
* @param End = endereço da pessoa cadastrada
*/
public AgendaDTO() {}
public AgendaDTO(String nome, String foneres)
{
this.nome = nome;
this.foneres = foneres;
}
public AgendaDTO(String nome, String end, String foneres, String fonecel, String fonecom, String email)
{
this.nome = nome;
this.end = end;
this.foneres = foneres;
this.fonecel = fonecel;
this.fonecom = fonecom;
this.email = email;
}
//retorna o nome
public String getNome ()
{
return nome;
}
//altera o nome
public void setNome(String nome)
{
this.nome = nome;
}
//retorna o endereço
public String getEnd()
{
return end;
}
//altera o endereço
public void setEnd(String end)
{
this.end = end;
}
//retorna o telefone residencial
public String getFoneRes()
{
return foneres;
}
//altera o telefone residencial
public void setFoneRes(String foneres)
{
this.foneres = foneres;
}
//retorna o telefone celular;
public String getFoneCel()
{
return fonecel;
}
//altera o telefone celular
public void setFoneCel(String fonecel)
{
this.fonecel = fonecel;
}
//retorna telefone comercial
public String getFoneCom()
{
return fonecom;
}
//altera telefone comercial
public void setFoneCom(String fonecom)
{
this.fonecom = fonecom;
}
//retorna o email
public String getEmail()
{
return email;
}
//altera o email
public void setEmail(String email)
{
this.email = email;
}
}//fim da classe
//classe externa que cria o DAO
public void retrieveAgenda() throws SQLException
{
//criação do objeto PreparedStatement
PreparedStatement psmt = null;
//criação do objeto ResultSet
ResultSet rs = null;
try
{
super.connect();
//cria vetor para receber resultado da consulta
Vector<Object[]> nomes = new Vector<Object[]>();
//abre espaço para a declaração utilizando o objeto con
psmt = con.prepareStatement(QSELECTFNOME);
//executa a consulta e obtém um Result
rs = psmt.executeQuery();
//cria o objeto metadata para solicitar cursor rolável
ResultSetMetaData rsmd = rs.getMetaData();
//cria vetor para receber nome da coluna
String[] col = {"Nomes"};
while (rs.next())
{
System.out.println("Consulta realizada com sucesso!");
//obtém dados das colunas da tabela pelo ResultSet
Object[] celula = new Object[rsmd.getColumnCount()];
for(int j=0;j<rsmd.getColumnCount();++j)
celula[j] = rs.getString("nome");
nomes.add(celula);
}
Object[][] lin = (Object[][])nomes.toArray(new Object[0][0]);
new GradeNomes().setDadosGrade(new DefaultTableModel(lin,col));
}
catch (SQLException sqlex)
{
//se não encontrar gera exceção de erro
throw new SQLException("Falha:" + sqlex.getMessage());
}
catch (Exception Ex)//captura falha geral
{
//se não encontrar gera exceção de erro
throw new SQLException("Falha geral!\n" + Ex);
}
finally
{
try
{
//fecha recursos abertos anteriormente
if (psmt != null)
{
psmt.close();
}
if (rs != null)
{
rs.close();
}
}
catch (Exception E)
{
E.printStackTrace();
}
}
}// fim do método retrieveAgendaDAO
//método para consulta de dados
public AgendaDTO retrieveAgendaFullDAO(String vnome) throws SQLException
{
//verifica se nome é nullo
if (vnome == null) {
throw new SQLException("Nome do cliente não pode ser nulo!");
}
//criação do objeto PreparedStatement
PreparedStatement psmt = null;
//criação do objeto ResultSet
ResultSet rs = null;
try
{
super.connect();
//abre espaço para a declaração utilizando o objeto con
psmt = con.prepareStatement(QSELECT);
//passa parâmetro para PreparedStatement
psmt.setString(1,vnome);
//executa a consulta e obtém um Result
rs = psmt.executeQuery();
while(rs.next())
{
return new AgendaDTO(rs.getString("nome"),rs.getString("end"), rs.getString("foneres"), rs.getString("fonecel"), rs.getString("fonecom"), rs.getString("email"));
}
}
catch (SQLException sqlex)
{
//se não encontrar gera exceção de erro
throw new SQLException("Falha na pesquisa do nome!" + sqlex);
}
catch (Exception Ex)//captura falha geral
{
//se nÃo encontrar gera exceção de erro
//throw new SQLException("Falha geral!\n" + Ex.getCause());
Ex.printStackTrace();
} finally {
try {
//fecha recursos abertos anteriormente
if (psmt != null)
{
psmt.close();
}
if (rs != null)
{
rs.close();
}
} catch (Exception E)
{
E.printStackTrace();
}
}
return null;
}// fim do método retrieveAgendaDAO
//classe externa que monta a janela com a grade com os nomes existentes na agenda e executa a abertura dos dados completos
public class GradeNomes extends Janela implements MouseListener
{
//atributos da janela
JTable tabnomes;
JLabel status = new JLabel(“Selecione um registro para visualizar os detalhes.”);
JPanel p0;
AgendaDAO agDAO;
AgendaDTO agDTO;
DefaultTableModel tab = new DefaultTableModel();
public GradeNomes()
{
janelaGrade();
montaGradeNomes();
setDadosGrade(tab);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent we)
{
JOptionPane.showMessageDialog(null,"A janela será fechada!");
System.exit(0);
}
});
}
public void janelaGrade()
{
setTitle("Lista de nomes");
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
public void montaGradeNomes()
{
tabnomes = new JTable();
tabnomes.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
tabnomes.setCursor(new Cursor(Cursor.HAND_CURSOR));
tabnomes.setFocusable(true);
tabnomes.setToolTipText("Nomes agendados");
p0 = new JPanel();
tabnomes.addMouseListener(this);
getContentPane().setLayout(new BorderLayout());
getContentPane().add(new JScrollPane(tabnomes), "East");
getContentPane().add(status,"South");
getContentPane().add(p0,"West");
}
public void setDadosGrade(DefaultTableModel tab)
{
tabnomes.setModel(tab);
setVisible(true);
}
public void mouseReleased(MouseEvent me)
{
if(me.getButton() != MouseEvent.BUTTON1) return;
if(!(me.getSource() instanceof JTable)) return;
JTable tb = (JTable)me.getSource();
if(tb.getSelectionModel().isSelectionEmpty()) return;
int i = tb.getSelectionModel().getMinSelectionIndex();
try
{
String nom = (String) tb.getModel().getValueAt(i,0);
try
{
agDAO = new AgendaDAO();
agDTO = agDAO.retrieveAgendaFullDAO(nom);
new GradeTdNomes();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
}
public void mouseClicked(MouseEvent me){}
public void mouseEntered(MouseEvent arg0) {}
public void mouseExited(MouseEvent arg0) {}
public void mousePressed(MouseEvent arg0) {}
}
–Até aqui ele roda perfeitamente, lança os dados no Bean do DTO,porém ao montar a tela para mostrar os dados ocorre que não traz as informações para o JTextField, extamente pq ao executar o Bean, traz as informações nulas.
//classe externa para a construção da janela com os dados completos
public class GradeTdNomes extends Janela //implements MouseListener
{
//atributos da janela
JTable tabtdnomes;
JPanel p1, p2;
JLabel lbnome, lbend, lbfoneres, lbfonecel, lbfonecom, lbemail;
JTextField txtnome, txtend, txtfoneres, txtfonecel, txtfonecom, txtemail;
AgendaDTO agDTO;
public GradeTdNomes()
{
janelaGrade2();
montaJanelaTdNomes();
setVisible(true);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent we)
{
JOptionPane.showMessageDialog(null,"A janela será fechada!");
System.exit(0);
}
});
}
public void janelaGrade2()
{
setTitle("Dados Completo");
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
public void montaJanelaTdNomes()
{
getContentPane().setLayout(new BorderLayout());
JPanel p0 = new JPanel();
p0.setLayout(new GridLayout(1,1,30,30));
p0.add(new JLabel(" "));
p1 = new JPanel();
p1.setLayout(new GridLayout(6,2,10,10));
p1.add(new JLabel(""));
p1.add(new JLabel("NOME: "));
p1.add(new JLabel(""));
p1.add(new JLabel("ENDEREÇO: "));
p1.add(new JLabel(""));
p1.add(new JLabel("FONE RESIDÊNCIA:"));
p1.add(new JLabel(""));
p1.add(new JLabel("FONE CELULAR: "));
p1.add(new JLabel(""));
p1.add(new JLabel("FONE COMERCIAL: "));
p1.add(new JLabel(""));
p1.add(new JLabel("E-MAIL: "));
txtnome = new JTextField(50);
txtend = new JTextField(100);
txtfoneres = new JTextField(15);
txtfonecel = new JTextField(15);
txtfonecom = new JTextField(15);
txtemail = new JTextField(100);
JPanel p2 = new JPanel();
p2.setLayout(new GridLayout(6,1,10,10));
p2.add(txtnome);
p2.add(txtend);
p2.add(txtfoneres);
p2.add(txtfonecel);
p2.add(txtfonecom);
p2.add(txtemail);
agDTO = new AgendaDTO();
txtnome.setText(agDTO.getNome());
txtend.setText(agDTO.getEnd());
txtfoneres.setText(agDTO.getFoneRes());
txtfonecel.setText(agDTO.getFoneCel());
txtfonecom.setText(agDTO.getFoneCom());
txtemail.setText(agDTO.getEmail());
JPanel p3 = new JPanel();
p3.setLayout(new GridLayout(3,4,20,20));
p3.add(new JLabel(""));
p3.add(new JLabel(""));
p3.add(new JLabel(""));
p3.add(new JLabel(""));
p3.add(new JLabel(""));
p3.add(new JLabel(""));
p3.add(new JLabel(""));
//p3.add(bincluir);
p3.add(new JLabel(""));
//p3.add(bcancelar);
p3.add(new JLabel(""));
p3.add(new JLabel(""));
p3.add(new JLabel(""));
p3.add(new JLabel(""));
p3.add(new JLabel(""));
p3.add(new JLabel(""));
JPanel p4 = new JPanel();
p4.setLayout(new GridLayout(1,1,50,50));
p4.add(new JLabel(" "));
getContentPane().add(p0,"North");
getContentPane().add(p1,"West");
getContentPane().add(p2,"Center");
getContentPane().add(p3,"South");
getContentPane().add(p4,"East");
}
}