Inserir varios valores de variaveis em uma lista

ola.

na classe tela de cadastro capturo os valores dos campos de texto e os atribuo as variaveis da classe cliente

Cliente nome = new Cliente();
							
			nome.setCodigo(txtCod.getText());
			txtCod.setText("");
			
			nome.setNome(txtNome.getText());
			txtNome.setText("");
			
			nome.setEmail(txtEmail.getText());
			txtEmail.setText("");
			
			nome.setTelefone(txtTel.getText());
			txtCod.setText("");				
		}
	});

porem nao consigo tratar esses dados para os atribuir em uma jtable da classe lista de cadastros para poder ir acrescendo os cadastros.

Normalmente você usa uma lista (ArrayList/LinkedList) para armazenar os dados, e um TableModel (ex: AbstractTableModel), para processar a exibição no Jtable. Tem vários tutoriais na net sobre (ex: https://www.devmedia.com.br/jtable-utilizando-o-componente-em-interfaces-graficas-swing/28857 ), possivelmente aqui no GUJ, então é só procurar.

Se não é isso que você precisa, seja mais específico.

Abraço.

1 curtida

primeiro estou tentanto implementar o arraylist. porem nao sei fazer e nao entendi pelo que pesquisei.
tenho a classe cliente com variaveis codigo,nome,telefone e email.
instanciei estas vars pela classe cadastros (via get e set)
agora gostaria de guardar os dados em um array.

Onde pesquisou que não entendeu? De modo geral, da mesma forma que você fez Cliente cliente = new Cliente(); e depois passou os dados, pode adicionar esse objeto Cliente em um List. Ex:

List<Cliente> listaDeClientes = new ArrayList<Cliente>();

Cliente umCliente = new Cliente();
umCliente.setCodigo("1");
umCliente.setNome("Soffner");
umCliente.setTelefone("+559911111111");
umCliente.setEmail("Soffner@usuariodoguj.com.br");

listaDeClientes.add(umCliente);

Tem um monte de vídeos, cursos e tutoriais por aí. Exemplos (após uma pesquisa rápida):

Mas tem que sentar na frente do PC, ler, assistir e praticar.

Abraço.

1 curtida

isso que nao entendo, nao quero adicionar um valor String padrao como exemplo dado.
gostaria de o array importasse o valor ja salvo nos objetos da classe cliente.
vou continuar buscando.

Cliente nome = new Cliente();

			int cod = Integer.parseInt(txtCod.getText());
			nome.setCodigo(cod);
			txtCod.setText("");
		
			
			nome.setNome(txtNome.getText());
			txtNome.setText("");
			
			nome.setEmail(txtEmail.getText());
			txtEmail.setText("");
			
			nome.setTelefone(txtTel.getText());
			txtTel.setText("");
			
			
			ArrayList<Cliente> clientes = new ArrayList<>();
			
			nome.setCodigo(nome.getCodigo());
			nome.setNome(nome.getNome());
			nome.setEmail(nome.getEmail());
			nome.setTelefone(nome.getTelefone());
			
			clientes.add(nome);
			System.out.println(clientes);

consegui imprimir pesquisando na apostila indicada.
porem nao parece estar correto apesar de funcionar.

Cliente nome = new Cliente();

			int cod = Integer.parseInt(txtCod.getText());
			nome.setCodigo(cod);
			txtCod.setText("");
		
			
			nome.setNome(txtNome.getText());
			txtNome.setText("");
			
			nome.setEmail(txtEmail.getText());
			txtEmail.setText("");
			
			nome.setTelefone(txtTel.getText());
			txtTel.setText("");
			
			int code = nome.getCodigo();
			String name=nome.getNome();
			String mail = nome.getEmail();
			String tel = nome.getTelefone();
			
			
			List clientes = new ArrayList<Cliente>();
			clientes.add(code);
			clientes.add(name);
			clientes.add(mail);
			clientes.add(tel);
			
			System.out.println(clientes);

Os “valores String padrao” foram só um exemplo, você pode fazer exatamente como já está fazendo, pegando dos JTextField.

Você também parece estar confundindo inserir um objeto (instância de cliente) com inserir os valores de cada campo como String. Você não insere os atributos (id, nome, e-mail e telefone) independentemente, você cria um objeto cliente, passa os valores pro objeto, e insere esse objeto inteiro.

Ajustando seu código:

ArrayList<Cliente> clientes = new ArrayList<>();

Cliente cliente = new Cliente();

int cod = Integer.parseInt(txtCod.getText());
cliente.setCodigo(cod);
txtCod.setText("");

cliente.setNome(txtNome.getText());
txtNome.setText("");

cliente.setEmail(txtEmail.getText());
txtEmail.setText("");

cliente.setTelefone(txtTel.getText());
txtTel.setText("");

// Adiciona a instância cliente na lista de clientes.
clientes.add(cliente);

// Faz um loop na lista e imprime o nome de cada cliente.
for(Cliente c : clientes) {
  System.out.println(c.getNome());
}

Note que

System.out.println(clientes);

Não faz o que você espera, que é exibir a lista. Você precisa de um loop, como mostrei acima.

Abraço.

1 curtida

nao conseguir implementar o for sugerido. erro Type mismatch no clientes após o c :

Cliente cliente = new Cliente();
			
			
			int cod = Integer.parseInt(txtCod.getText());
			cliente.setCodigo(cod);
			txtCod.setText("");
		
			
			cliente.setNome(txtNome.getText());
			txtNome.setText("");
			
			cliente.setEmail(txtEmail.getText());
			txtEmail.setText("");
			
			cliente.setTelefone(txtTel.getText());
			txtTel.setText("");
			
			int code = cliente.getCodigo();
			String name=cliente.getNome();
			String mail = cliente.getEmail();
			String tel = cliente.getTelefone();
			
			
			
			List clientes = new ArrayList<Cliente>();
			clientes.add(code);
			clientes.add(name);
			clientes.add(mail);
			clientes.add(tel);
			clientes.add(cliente);
			
			for (Cliente c : **clientes**) {
	            System.out.println(c.getNome());
	        }

Você marcou o tópico como resolvido. Ainda tem dúvidas ou não?

A linha que está dando erro é essa?

for (Cliente c : **clientes**) {

Se sim, esses asteriscos fazem parte do código que você tentou rodar? Pois eles não deveriam estar aí. Olhe como declarei o for no meu exemplo acima.

Eu não tenho como ficar testando aqui, mas testei meu código e ele rodou conforme esperado.

Outra coisa, você ainda está adicionando ao ArrayList coisas que não precisam (nem podem) estar lá, pois são de tipos incompatíveis. Se você declara seu ArrayList como de Cliente, não pode tentar adicionar uma String nele. Revise as seguintes linhas:

List<Cliente> clientes = new ArrayList<Cliente>(); // 
clientes.add(code); // NÃO PRECISA DESSA LINHA, E O TIPO É INCOMPATÍVEL
clientes.add(name); // TAMBÉM NÃO PRECISA DESSA
clientes.add(mail); // TAMBÉM NÃO PRECISA DESSA
clientes.add(tel); // TAMBÉM NÃO PRECISA DESSA

// Dessa sim você precisa, pois adiciona o Objeto cliente ao ArrayList
clientes.add(cliente);

Ou seja, após ter um objeto Cliente devidamente preenchido, você só precisa adicioná-lo ao ArrayList, nada mais:

// Declara o ArrayList
List<Cliente> clientes = new ArrayList<Cliente>();
// Adiciona o cliente
clientes.add(cliente);

Abraço.