Meu pro é o seguinte, eu tenho um cadastro de produtos com dois forms, um mostra os produtos com suas caracteristicas e o outro é o da pesquisa do produto. Eu peço pra abrir o form da pesquisa pelo form de produtos e quero que quando eu clicar na linha da jTable ele volte para o form produtos com o ítem que eu selecionei. Eu só consegui isso se eu abir um novo form produtos atraves do form pesquisa.
O que eu quero é o seguinte:
1 - abrir o form cadastro;
2 - clicar no botão pesquisar do form cadastro;
3 - abrir o form pesquisa;
4 - pesquisar;
5 - voltar para o form cadastro com o item da pesquisa;
conn.executeSQL("select * from produtos where descricao like '"+pesquisa+"' order by descricao");
conn.resultset.next();
mostraDadosProduto();
}[/code]
private static final long serialVersionUID = -8890116584688197586L;
public static void main(String[] args) {
FormA frame = new FormA();
frame.setVisible(true);
}
private Pessoa pessoa = new Pessoa();
public FormB getFormB() {
return new FormB(this);
}
public FormA() {
setSize(200, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane = getContentPane();
contentPane.setLayout(null);
JButton button = new JButton("Click");
button.setBounds(10, 10, 100, 30);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
getFormB().setVisible(true);
}
});
contentPane.add(button);
nomeText.setBounds(10, 50, 150, 20);
contentPane.add(nomeText);
cpfText.setBounds(10, 80, 150, 20);
contentPane.add(cpfText);
}
public Pessoa getPessoa() {
return pessoa;
}
public void setPessoa(Pessoa pessoa) {
this.pessoa = pessoa;
}
public void refresh() {
nomeText.setText(getPessoa().getNome());
cpfText.setText(getPessoa().getCpf());
}
private JTextField nomeText = new JTextField();
private JTextField cpfText = new JTextField();
}
class Pessoa {
private String nome;
private String cpf;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
@Override
public String toString() {
return "nome: " + nome + ", cpf: " + cpf;
}
}[/code]
package guj;
import java.awt.Container;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JDialog;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;
public class FormB extends JDialog {
private static final long serialVersionUID = 662652372927442404L;
private String[][] dados = new String[2][2];
@Override
public FormA getOwner() {
return (FormA) super.getOwner();
}
public FormB(FormA frame) {
super(frame);
dados[0][0] = "QWERT";
dados[0][1] = "000.111.222-56";
dados[1][0] = "POIUY";
dados[1][1] = "153.124.912-10";
setSize(200, 200);
setBounds(100, 100, 300, 200);
Container contentPane = getContentPane();
TableModel dataModel = new AbstractTableModel() {
public int getColumnCount() {
return 2;
}
public int getRowCount() {
return dados.length;
}
public Object getValueAt(int row, int col) {
return dados[row][col];
}
};
JTable table = new JTable(dataModel);
JScrollPane scrollpane = new JScrollPane(table);
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
JTable tmp = (JTable) e.getSource();
TableModel model = tmp.getModel();
int index = tmp.getSelectedRow();
getOwner().getPessoa().setNome((String) model.getValueAt(index, 0));
getOwner().getPessoa().setCpf((String) model.getValueAt(index, 1));
getOwner().refresh();
setVisible(false);
}
}
});
contentPane.add(scrollpane);
}
}
A partir da classe FormA que representa um form você clica no botão e exibe o FormB que tem um grid. Dois cliques em um item fecha a janela e atualiza o FormA.