Inserir dados em uma tabela

4 respostas Resolvido
Stefany_Silva

Estou criando uma tabela em java que ao inserir dados é capturado e mostrado na tabela, mas não sei exatamente como faço para declarar minhas variaveis ao chamar na tabela.

cadastro usuarios = new cadastro();
usuarios.setNome(jTextField2.getText().trim());
usuarios.setCpf(jTextField3.getText());
usuarios.setEmail(jTextField4.getText());
usuarios.setTelefone(jTextField5.getText());
usuarios.setDescricao(jTextArea1.getText());

if ((jTextField2.getText().isEmpty())
		|| (jTextField3.getText().isEmpty())
		|| (jTextField4.getText().isEmpty())
		|| (jTextField5.getText().isEmpty())
		||(jTextArea1.getText().isEmpty()))
{
	JOptionPane.showMessageDialog(null,"por favor preencher todos os campos!");
}
else
{
	DefaultTableModel val= (DefaultTableModel) tbusuario.getModel();
	//erro com essa linha abaixo:
	val.addRow(new usuarios String[](nome,cpf,email,telefone,descricao));
		
	jTextField2.setText("");
	jTextField3.setText("");
	jTextField4.setText("");
	jTextField5.setText("");
	jTextArea1.setText("");

	jTextField2.requestFocus();
}

4 Respostas

S
Solucao aceita

creio que ficaria desta forma.

if ((jTextField2.getText().isEmpty())
		|| (jTextField3.getText().isEmpty())
		|| (jTextField4.getText().isEmpty())
		|| (jTextField5.getText().isEmpty())
		||(jTextArea1.getText().isEmpty()))
{
	JOptionPane.showMessageDialog(null,"por favor preencher todos os campos!");
}
else
{
	DefaultTableModel val= (DefaultTableModel) tbusuario.getModel();
	//array de String, dentro das chaves deve se passar os valores desejados.
	val.addRow(new String [] {nome,cpf,email,telefone,descricao});
		
	jTextField2.setText("");
	jTextField3.setText("");
	jTextField4.setText("");
	jTextField5.setText("");
	jTextArea1.setText("");

	jTextField2.requestFocus();
}

Posso estar errado =D
Mas faz o teste, qualquer coisa avise.

Stefany_Silva

oi funcionou sim, muito obrigada.
fiz minhas validações e depois criei um novo método para ler os dados que foram inseridos na tabela.

`public void leiaTabela() {

DefaultTableModel modelo = (DefaultTableModel) tbusuario.getModel();

modelo.setNumRows(0);
UsuarioDao usuario = new UsuarioDao();

  for (cadastro p : usuario.listar()) {
        modelo.addRow(new Object[]{
            p.getIdusuario(),
            p.getNome(),
            p.getCpf(),
            p.getEmail(),
            p.getTelefone(),
            p.getDescricao(),
           
                
     });
  }`
staroski

Eu evitaria utilizar DefaultTableModel, ele basicamente só é útil para JTable com dados estáticos, já que você precisa adicionar itens nele.

Para JTable com conteúdo dinâmico, implemente o seu próprio TableModel, estendendo AbstractTableModel, assim não há necessidade de ficar escrevendo laços para inserir itens na JTable, basta simplesmente fazer seu TableModel renderizar uma coleção de objetos.

Veja um exemplo neste post aqui.

Stefany_Silva

oi, de inicio eu fiz com AbstractTableModel só que executou somente uma vez tudo belezinha e depois ficou dando erro, por isso acabei optanto pelo DefaultTableModel. Mesmo assim, irei seguir o exemplo, e fazer de forma dinâmica. muito obrigada.

Criado 1 de maio de 2019
Ultima resposta 2 de mai. de 2019
Respostas 4
Participantes 3