Como faço uma grid no meu caso

12 respostas
C

Olá,

Estou iniciando no java e fiz um formulário, com nome, endereço, telefone, etc. Gostaria de que ao clicar em SALVAR as informações contidas no JTextField fossem enviadas para uma GRID que está na própria interface do programa. Para o usuário ver o que ele salvou.
Sendo que já estabeleci uma conexão com o banco de dados ao clicar em salvar, os campos são enviados ao BD.

Como posso faer isso?

Grato pela atenção.

12 Respostas

davidtiagoconceicao

Sua grid precisa ser adicionada como listener do botão salvar, para recuperar as informações salvas (do banco ou dos campos mesmo).

C

Hm… e como faço isso amigo?
Uso a IDE NetBeans…

davidtiagoconceicao

Há duas formas de você fazer isso, uma mais rápida e uma mais flexível:

  • No código em que você trata o evento de clicar no botão salvar, você pode invocar diretamente o método que efetua a atualização da grid.
  • Você cria um conjunto de listeners para a classe em questão, “avisa” os mesmos que o evento ocorreu no seu método salvar, faz a grid implementar a interface de listener que você criou e adiciona a grid como listener da classe anterior.

Para mais informações sobre a segunda opção, pesquise sobre o padrão Observer.

C

davidtiagoconceicao ,

desculpe a ignorância, é que estou aprendendo o java e de certa forma preciso fazer essa grid.

Neste caso,

  • No código em que você trata o evento de clicar no botão salvar, você pode invocar diretamente o método que efetua a atualização da grid.

como seria esse método?

Obrigado desde já.

davidtiagoconceicao

cipolatto:
davidtiagoconceicao ,

desculpe a ignorância, é que estou aprendendo o java e de certa forma preciso fazer essa grid.

Neste caso,

  • No código em que você trata o evento de clicar no botão salvar, você pode invocar diretamente o método que efetua a atualização da grid.

como seria esse método?

Obrigado desde já.

Sem problema cara, só não posso te entregar o código todo pronto né?!

No NB, você adicionou um código que salva as informações no seu BD, certo?
Logo após este código, você colocaria uma chamada do tipo:

grid.atualizaInformacoes();
//ou
grid.atualizaInformacoes(informacao1, informacao2, informacaoN);

Daí dentro do método atualizaInformacoes a grid seria atualizada.

thiagoaugs

Boa tarde…

estou com um problema parecido…Tenho um trabalho da facul… q tem q fazer com Swing, to apanhando pra conseguir chamar os dados do meu Vo para a grid,

Tenho uma classe Controller que tem o metodo GetLikeList, mas como que seto os valores q vao ser retornados…

alguem poderia mostrar o caminho…

71C4700
Tenta assim:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    String nome = jTextField1.getText();
    String senha = jTextField2.getText();
    String email = jTextField3.getText();
    Usuario usuario(nome,senha,email);
    Banco.salvar(usuario);
    atualizarTabela();
}

E no metodo de em seu GRID …

ResultSet rs = Conexao.getConexao().createStatement().executeQuery("Select * from Usuario");
    
    DefaultTableModel dtm = (DefaultTableModel) jTable1.getModel();
    dtm.setRowCount(0);// Pra limpar a tabela

    while(rs.next()){
                dtm.addRow(new Object[]{rs.getString("nome"),rs.getString("email"),rs.getString("senha")});
    }
thiagoaugs

71C4700...

Acho q nao vai funcionar assim no meu projeto....

Tenho uma classe controller....
package controller;

import java.util.List;


import util.Transacao;

public class Controller<T> {
	
	public static final Integer ADICIONA = 0;
	public static final Integer REMOVE = 1;
	public static final Integer ALTERA = 2;
	
	
	public void execute(Integer acao, T u)
	{
		switch (acao) {
		case 0:
			try {
				Transacao.getInstance().beginTransaction();
				this.adiciona(u);
				Transacao.getInstance().commit();
			} catch (Exception e) {
				e.printStackTrace();
				System.out.println(e);
				System.out.println("ERRO NO M�TODO ADICIONA NA CONTROLLER");
				Transacao.getInstance().rollback();
			}
			break;
		case 1:
			try {
				Transacao.getInstance().beginTransaction();
				this.remove(u);
				Transacao.getInstance().commit();
			} catch (Exception e) {
				e.printStackTrace();
				System.out.println(e);
				System.out.println("ERRO NO M�TODO REMOVE NA CONTROLLER");
				Transacao.getInstance().rollback();
			}
			break;
		case 2:
			try {
				Transacao.getInstance().beginTransaction();
				this.atualiza(u);
				Transacao.getInstance().commit();
			} catch (Exception e) {
				e.printStackTrace();
				System.out.println(e);
				System.out.println("ERRO NO M�TODO ATUALIZA NA CONTROLLER");
				Transacao.getInstance().rollback();
			}
			break;
		case 3:
			try {
				Transacao.getInstance().beginTransaction();
				this.listaTudo();
				Transacao.getInstance().commit();
			} catch (Exception e) {
				e.printStackTrace();
				System.out.println(e);
				System.out.println("ERRO NO M�TODO Lista NA CONTROLLER");
				Transacao.getInstance().rollback();
			}
			break;
		default:
			break;
		}
	}
	
	public T getObjeto(){
		return null;
	}
	public void setObjeto(T u){
	}
	
	public Boolean adiciona(T u){
		return null;
	}

	public List<T> listaTudo(){
		return null;
	}

	public T procura(Long id){
		return null;
	}

	public Boolean remove(T u){
		return null;
	}

	public Boolean atualiza(T u){
		return null;
	}
}
ai tenho uma classe controllerCliente..
package controller;

import java.util.List;
import objetosVo.ClienteVo;
import facade.Facade;



public class ControllerCliente extends Controller<ClienteVo> {

  
   
     
	private Facade<ClienteVo> facade;
		
	private ClienteVo cliente = new ClienteVo();
	
	public ControllerCliente(){
		facade = new Facade<ClienteVo>(ClienteVo.class);
		this.cliente = new ClienteVo();
	}

  
	public ClienteVo getObjeto(){
		return this.cliente;
	}
	public void setObjeto(ClienteVo u){
		this.cliente= u;
	}
	
	public Boolean adiciona(ClienteVo u){
		this.facade.adiciona(u);
		return true;
	}

	public List<ClienteVo> listaTudo(){
		return this.facade.listaTudo(); 
	}

	public ClienteVo procura(Long idusuario){
		return this.facade.procura(idusuario);
	}

	public Boolean remove(ClienteVo u){
		this.facade.remove(u);
		return null;
	}

	public Boolean atualiza(ClienteVo u){
		this.facade.atualiza(u);
		return null;
	}
	
	}

na minha UI foi feita no netbeans.....
ela ta assim...
[/code]
public class TelaCliente extends javax.swing.JFrame {
private static final long serialVersionUID = 1L;

/** Creates new form TelaCliente */
public TelaCliente() {
initComponents();
}

/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")

private void initComponents() {

jPanel1 = new javax.swing.JPanel();
jTextField1 = new javax.swing.JTextField();
jTextField2 = new javax.swing.JTextField();
jTextField3 = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jButton4 = new javax.swing.JButton();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
jTextField4 = new javax.swing.JTextField();
jTextField5 = new javax.swing.JTextField();
jTextField6 = new javax.swing.JTextField();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jLabel1.setText("Nome");

jLabel2.setText("RG");

jLabel3.setText("CPF");

jButton1.setText("Salvar");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});

jButton2.setText("Excluir");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});

jButton3.setText("Procurar");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});

jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {

},
new String [] {
"Nome", "RG", "CPF"
}
));
jScrollPane1.setViewportView(jTable1);

jButton4.setText("Limpar");

jLabel4.setText("Telefone");

jLabel5.setText("Email");

jLabel6.setText("Data nascimento");

}

//insere
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
ClienteVo u = new ClienteVo();

u.setNome(jTextField1.getText());
u.setRg(jTextField2.getText());
u.setCpf(jTextField3.getText());
u.setTelefone(jTextField4.getText());
u.setEmail(jTextField5.getText());
u.setData_nasc(jTextField6.getText());

ControllerCliente ctr = new ControllerCliente();
ctr.execute(0, u);
limpaCamposFocus();
gridAtualiza();

}

//limpar

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {

}

//procura
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
gridAtualiza();




}
//excluir
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {

}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new TelaCliente().setVisible(true);
}
});
}

// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
private javax.swing.JTextField jTextField3;
private javax.swing.JTextField jTextField4;
private javax.swing.JTextField jTextField5;
private javax.swing.JTextField jTextField6;
// End of variables declaration//GEN-END:variables

private void limpaCamposFocus(){
jTextField1.requestFocus();
jTextField1.setText("");
jTextField2.setText("");
jTextField3.setText("");
jTextField4.setText("");
jTextField5.setText("");
jTextField6.setText("");
}

private void gridAtualiza(){
ControllerCliente ctr = new controller.ControllerCliente();
ctr = this.listaTudo();


}


}

[code]

no metodo do button salvar eu to chamando assim...
ControllerCliente ctr = new ControllerCliente();

.....

to meio perdido... pois nunca usei swing,,,,

onde trabalho... uso Java+Flex, onde o flex tem componentes com o Bindable... que facilita muito para fazer tal funcionalidade....

valeu pela ajuda...

M

Dê uma olhada em meus códigos, tenho um exemplo usando JAVA + Banco de Dados Access que possui os dados em grid após cadastrado, uso a IDE Eclipse Europa.

T+ e bons estudos…

[email removido] caso precise de uma força…

C

hm muito obrigado meu amigo. Vou dar uma olhada!

Boa semana, até mais!

thiagoaugs

Valeu ai pela ajuda…

C

Bah não to conseguindo toca isso sozinho…
Alguém pode me dar uma força nesta grid?
Não sei como fazer isso mesmo…

Grato.

Criado 26 de novembro de 2008
Ultima resposta 27 de nov. de 2008
Respostas 12
Participantes 5