Dexa eu te perguntar uma coisa
vc esta usando DAO (Data Acess Object)?
Bem eu faço aki oq vc esta querendo fazer
eu tenho um tela de cadastro e um botao de consulta. quando eu clico no botao de consulta, ele me mostra uma JInternalFrame com Um jtable.
e qdo dou dois clique na jtable ele me retorna os dados da jtable na tela de cadastro.
Bem o que eu faço é o seguinte
tenho a seguinte classe e interface
public class ResultSetEvent extends EventObject{
public ResultSetEvent(Object source) {
super(source);
}
}
public interface ResultSetListener extends EventListener{
public void addResultSetAtFrame(ResultSetEvent e);
}
essa classe e interface eu utilizo elas para preencher as minhas tela de cadastro qdo dou dois clique na jtable
agora vou te mostra um classe que eu utilizo para preencher as telas
[code]public class ResultSetAtFrame implements ResultSetListener {
private InternalFrame i;
public ResultSetAtFrame(InternalFrame f) {
i = f;
}
public void addResultSetAtFrame(ResultSetEvent e) {
if (i instanceof FormCidade) {
Cidade cid = (Cidade) e.getSource();
FormCidade form = (FormCidade) i;
form.getJtfCodCid().setText(cid.getCodCid().toString());
form.getJtfNomeCid().setText(cid.getNomeCid());
form.getJcbUf().setSelectedItem(cid.getEstado());
form.setEnableButton(true, false, true, true);
}
}
}[/code]
Bem agora vou te mostra a minha tela de consulta PADRAO a de cidade
[code]public abstract class FormConsulta extends javax.swing.JInternalFrame{
protected GenericDao dao;
private final Container painel = getContentPane();
private SimpleTable tabelaPesquisa;
private List<ResultSetListener> result;
private SimpleTextField tfPesquisa;
private JScrollPane scrollpane;
private JButton jbConfirmar;
private SimplePanel panel;
public FormConsulta(){
createComponents();
result = new ArrayList<ResultSetListener>();
}
private void createComponents(){
painel.setLayout(null);
panel = new SimplePanel(new GridBagLayout());
tfPesquisa = new SimpleTextField();
jbConfirmar = new JButton(CreateIcon.getConfirmar());
panel.addComponents(tfPesquisa, 0, 0, 200);
panel.setBorder(BorderFactory.createTitledBorder("Pesquisar"));
panel.setBounds(20,20,250,90);
painel.add(panel);
painel.add(jbConfirmar);
jbConfirmar.setBounds(280,67,70,40);
tfPesquisa.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
tfPesquisaKeyReleased();
}
});
jbConfirmar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jbConfirmarActionListener();
}
});
}
/**
* Metodo para criar a InternalFrame para a tela de consulta
*
* @param titulo Define o titulo da tela de consulta
* @param Sizex Define o comprimento da tela
* @param Sizey Define a altura da tela
* @param boundsx Define o comprimento da tabela (JScrollPane) na tela
* @param boundsy Define a altura da tabela (JScrollPane) na tela
*/
protected void setInternalFrame(String titulo, int Sizex, int Sizey, int boundsx , int boundsy){
painel.setLayout(null);
scrollpane = new JScrollPane(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
painel.add(scrollpane);
scrollpane.setBounds(20,130, boundsx, boundsy);
setTitle(titulo);
setSize(Sizex, Sizey);
setClosable(true);
createTable();
}
public SimpleTable getTabelaConsulta(){
return tabelaPesquisa;
}
public void setCreateTable(SimpleTable tabelaPesquisa) {
if (null != tabelaPesquisa) {
this.tabelaPesquisa = tabelaPesquisa;
this.tabelaPesquisa.addMouseListener(new MouseAdapter() {
@Override()
public void mouseClicked(MouseEvent evt) {
if (evt.getClickCount() >= 2) {
SelectedRow(getTabelaConsulta().getSelectedRow());
}
}
});
scrollpane.setViewportView(this.tabelaPesquisa);
}
}
public void addResultSetListener(ResultSetListener listener) {
result.add(listener);
}
public void removeResultSetListener(ResultSetListener listener) {
result.remove(listener);
}
protected void fireResultSetListener(ResultSetEvent event) {
for (ResultSetListener listener : result) {
listener.addResultSetAtFrame(event);
}
}
public void Consultar(){
String filtro = (String) tfPesquisa.getText();
DefaultTableModel model = (DefaultTableModel) tabelaPesquisa.getModel();
model.setRowCount( 0 );
Consultar(filtro);
}
public void jbConfirmarActionListener(){
SelectedRow(tabelaPesquisa.getSelectedRow());
}
public void tfPesquisaKeyReleased(){
Consultar();
}
protected abstract void createTable();
protected abstract void SelectedRow(int linha);
protected abstract void Consultar(String filtro);
}[/code]
[code]public class FormConsultaCidade extends FormConsulta {
public FormConsultaCidade(){
setInternalFrame("Consulta Cidade", 500, 435, 450, 257);
try {
dao = DaoFactory.getDao("DaoCidade");
} catch (SQLException ex) {
ex.printStackTrace();
}
}
@Override
protected void createTable() {
SimpleTable table = new SimpleTable();
table.addColumns("Código", 8, SimpleRenderer.TYPE_INTEGER);
table.addColumns("Cidade", 30);
table.addColumns("Estado", 5);
super.setCreateTable(table);
}
@Override
protected void SelectedRow(int linha) {
SimpleTable table = getTabelaConsulta();
if (linha == -1) {
JOptionPane.showMessageDialog(null, "Selecione uma Cidade", "Selecionar Registro",
JOptionPane.INFORMATION_MESSAGE);
}
Object rowvalue = table.getValueAt(linha, 0);
if (null != rowvalue) {
try {
Cidade cid = (Cidade) dao.selecionarConsulta(Integer.valueOf(rowvalue.toString()));
ResultSetEvent evento = new ResultSetEvent(cid);
fireResultSetListener(evento);
setVisible(false);
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
@Override
protected void Consultar(String filtro) {
try {
SimpleTable tabelaPesquisa = getTabelaConsulta();
List<Cidade> cidade = dao.listarConsulta(filtro);
DefaultTableModel model = (DefaultTableModel) tabelaPesquisa.getModel();
model.setRowCount(0);
for (Cidade cid : cidade) {
Object[] linha = {cid.getCodCid(), cid.getNomeCid(), cid.getEstado()};
tabelaPesquisa.addRow(linha);
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}[/code]
Agora vou te mostra como faço a chama da tela de consulta
[code]//Verifica se a instancia é um FormCidade
else if (internal instanceof FormCidade) {
FormCidade form = (FormCidade) internal;
form.getPanelCid().setEnableField(false);
if (telaConsulta == null || !telaConsulta.isVisible()) {
telaConsulta = SwingFactory.getFormConsulta("FormConsultaCidade");
telaConsulta.addResultSetListener(new ResultSetAtFrame(form));//essa parte é que faz o preenchimento da tela de cadastro
FormMenu.getDesktopPane(telaConsulta);
telaConsulta.setVisible(true);
telaConsulta.Consultar();//metodo para fazer a consulta no banco
}
}
}[/code]
No meu sistema eu tenho uma classe de eventos onde eu tenho um metodo “public void consultar()”. esse classe implementa um ActionListener
quando eu clique em “Consultar” na minha tela de cadastro. ela abre a tela de consulta numa outra internalframe. e quando dou dois clique a tela de consulta
ele executa a linha “telaConsulta.addResultSetListener(new ResultSetAtFrame(form));” e coloca na tela o resultado da consulta.
Bem é isso acho que fico meio complicado ainda
mas qualquer coisa me da um toque ai
falow