Como exibir resolver esse problema... JList + ArrayList + JTextArea

5 respostas
O

Bem pessoal, to com outro probleminha aqui complicado ate mesmo de expressar... mas vou tentar.

Tenho aqui um ArrayList de objetos... cada objeto, por sua vez, possuir os atributos:

ArrayList <Produtos> listaDeProdutos = new ArrayList <Produtos>;

private String nome; 
private int valorDeCusto; 
private int valorDeVenda;

Já conseguir, atravez de um Enhanced For e usando a DefaultListModel preencher meu campo do tipo JList com os nomes dos produtos... da seguinte forma:

public static JList exibirProdutos (JList listaDosProdutos){
int i = 0;
DefaultListModel modelo = new DefaultListModel();
for (Produtos obj : listaDeProdutos){
modelo.addElement(todosProdutos.get(i).nome);
i++;}
listaDosProdutos.setModel(modelo);
return listaDosProdutos;
}

Agora que já tenho a lista exibida na tela, eu gostaria que, a medida que o usuario selecionasse produto por produto na lista, os outros campos "Valor de Custo" e "Valor de Venda" fossem preenchidos na tela automaticamente, tenho na tela de consulta de produtos, esse JList onde aparece o nome dos produtos atravez desse metodo que mostrei... e tem outros 2 JTextArea onde devem aparecer o Valor de Custo e Valor de Venda do produto selecionado..., sem a necessidade de apertar mais botões... seria um preenchimento "sob demanda"... alguma luz de como eu posso fazer isso ? grato.

5 Respostas

Marlon_Meneses

crie um evento mouseclick na lista, capture o item selecionado da lista e em seguida preencha os campos

Marlon_Meneses

dica:
uma forma mais simples de popular o seu JList…

sobrescreva o metodo toString da sua classe Produto assim:

@Override
	 public String toString() {
		return getNome();
	}

e depois faça no seu JList

listaDosProdutos.setListData(listaDeProdutos.toArray());
O

Obrigado pelas dicas Marlon, hoje a noite vou testar e mais tarde respondo como ta o andamento aqui das coisas =D vlw !

S

Pode fazer assim pra capturar o evento de seleção tanto do mouse quanto pelas movimentação através das setas do teclado:

listaDosProdutos.addListSelectionListener(new ListSelectionListener(){
   @Override
   public void valueChanged(ListSelectionEvent e) {
      int index = listaDosProdutos.getSelectedIndex();
      if(index == -1) // nenhum item selecionado
         return;
      
      Produto produtoSelecionado = listaDeProdutos.get(index);

      //Aqui vai o código para preencher campos na tela
   }
});
O

Muito obrigado pelo exemplo silasyudi, vai ser de enorme ajuda ! muito obrigado mesmo.

Criado 5 de novembro de 2012
Ultima resposta 6 de nov. de 2012
Respostas 5
Participantes 3