Tenho um bean Servico e quero carregar o uma Lista desses beans mostrando no item do ComboBox a propriedade nome do Servico.
No bean que tou trabalhando tem uma propriedade listaServicos que é a ArrayList do tipo Servico, quero *associar* essa propriedade ao combobox.
Segue abaixo uma mensagem que enviei para uma lista em inglês se puder me dar uma dica eu ficaria muito grato.
Abraços
Francisco
Eu tenho esse Bean:
/*
* OrdemServicoFormBean.java
*/
package com.sikgraf.bean;
import com.jgoodies.binding.beans.ExtendedPropertyChangeSupport;
import com.sikgraf.listas.Servico;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class OrdemServicoFormBean {
private Integer numeroOrdem;
private Integer numeroOrcamento;
private Integer numeroNotaFiscal;
private Date dataCadastro;
private String nomeUsuario;
private Date dataBaixa;
private String nomeCliente;
private Integer codigoCliente;
private String nomeContato;
private Double folhasBoas;
private String observacao;
private String mensagem;
private Date dataVencimentoNotaDebito;
private boolean baixada;
private String mensagemNotaLinha1;
private String mensagemNotaLinha2;
private List<Servico> listaServicos;
private List quantidadeAprovadaServico;
private int indexServico;
private Servico servico;
private ExtendedPropertyChangeSupport changeSupport = new ExtendedPropertyChangeSupport(this);
/** Creates a new instance of OrdemServicoFormBean */
public OrdemServicoFormBean() {
List<Servico> servicos = new ArrayList<Servico>();
servicos.add(new Servico(0,"Serviços Executados na OS"));
this.setListaServicos(servicos);
}
public void addPropertyChangeListener(PropertyChangeListener x) {
changeSupport.addPropertyChangeListener(x);
}
public void removePropertyChangeListener(PropertyChangeListener x) {
changeSupport.removePropertyChangeListener(x);
}
public Integer getNumeroOrdem() {
return numeroOrdem;
}
public void setNumeroOrdem(Integer numeroOrdem) {
Integer oldValue = this.numeroOrdem;
this.numeroOrdem = numeroOrdem;
changeSupport.firePropertyChange("numeroOrdem", oldValue, numeroOrdem); }
public Integer getNumeroOrcamento() {
return numeroOrcamento;
}
public void setNumeroOrcamento(Integer numeroOrcamento) {
Integer oldValue = this.numeroOrcamento;
this.numeroOrcamento = numeroOrcamento;
changeSupport.firePropertyChange("numeroOrcamento", oldValue, numeroOrcamento); }
public Integer getNumeroNotaFiscal() {
return numeroNotaFiscal;
}
public void setNumeroNotaFiscal(Integer numeroNotaFiscal) {
Integer oldValue = this.numeroNotaFiscal;
this.numeroNotaFiscal = numeroNotaFiscal;
changeSupport.firePropertyChange("numeroNotaFiscal", oldValue, numeroNotaFiscal); }
public Date getDataCadastro() {
return dataCadastro;
}
public void setDataCadastro(Date dataCadastro) {
changeSupport.firePropertyChange("dataCadastro", this.dataCadastro, dataCadastro);
this.dataCadastro = dataCadastro;
}
public String getNomeUsuario() {
return nomeUsuario;
}
public void setNomeUsuario(String nomeUsuario) {
String oldValue = this.nomeUsuario;
this.nomeUsuario = nomeUsuario;
changeSupport.firePropertyChange("nomeUsuario", oldValue, nomeUsuario);
}
public Date getDataBaixa() {
return dataBaixa;
}
public void setDataBaixa(Date dataBaixa) {
Date oldValue = this.dataBaixa;
this.dataBaixa = dataBaixa;
changeSupport.firePropertyChange("dataBaixa", oldValue, dataBaixa);
}
public String getNomeCliente() {
return nomeCliente;
}
public void setNomeCliente(String nomeCliente) {
String oldValue = this.nomeCliente;
this.nomeCliente = nomeCliente;
changeSupport.firePropertyChange("nomeCliente", oldValue, nomeCliente);
}
public Integer getCodigoCliente() {
return codigoCliente;
}
public void setCodigoCliente(Integer codigoCliente) {
changeSupport.firePropertyChange("codigoCliente", this.codigoCliente, codigoCliente);
this.codigoCliente = codigoCliente;
}
public String getNomeContato() {
return nomeContato;
}
public void setNomeContato(String nomeContato) {
String oldValue = this.nomeContato;
this.nomeContato = nomeContato;
changeSupport.firePropertyChange("nomeContato", oldValue, nomeContato);
}
public Double getFolhasBoas() {
return folhasBoas;
}
public void setFolhasBoas(Double folhasBoas) {
changeSupport.firePropertyChange("folhasBoas", this.folhasBoas, folhasBoas);
this.folhasBoas = folhasBoas;
}
public String getObservacao() {
return observacao;
}
public void setObservacao(String observacao) {
changeSupport.firePropertyChange("observacao", this.observacao, observacao);
this.observacao = observacao;
}
public String getMensagem() {
return mensagem;
}
public void setMensagem(String mensagem) {
changeSupport.firePropertyChange("mensagem", this.mensagem, mensagem);
this.mensagem = mensagem;
}
public List<Servico> getListaServicos() {
return listaServicos;
}
public void setListaServicos(List<Servico> listaServicos) {
changeSupport.firePropertyChange("listaServicos", this.listaServicos, listaServicos);
this.listaServicos = listaServicos;
}
public List getQuantidadeAprovadaServico() {
return quantidadeAprovadaServico;
}
public void setQuantidadeAprovadaServico(List quantidadeAprovadaServico) {
changeSupport.firePropertyChange("quantidadeAprovadaServico", this.quantidadeAprovadaServico, quantidadeAprovadaServico);
this.quantidadeAprovadaServico = quantidadeAprovadaServico;
}
public Date getDataVencimentoNotaDebito() {
return dataVencimentoNotaDebito;
}
public void setDataVencimentoNotaDebito(Date dataVencimentoNotaDebito) {
changeSupport.firePropertyChange("dataVencimentoNotaDebito", this.dataVencimentoNotaDebito, dataVencimentoNotaDebito);
this.dataVencimentoNotaDebito = dataVencimentoNotaDebito;
}
public boolean isBaixada() {
return baixada;
}
public boolean getBaixada() {
return baixada;
}
public void setBaixada(boolean baixada) {
changeSupport.firePropertyChange("baixada", this.baixada, baixada);
this.baixada = baixada;
}
public String getMensagemNotaLinha1() {
return mensagemNotaLinha1;
}
public void setMensagemNotaLinha1(String mensagemNotaLinha1) {
changeSupport.firePropertyChange("mensagemNotaLinha1", this.mensagemNotaLinha1, mensagemNotaLinha1);
this.mensagemNotaLinha1 = mensagemNotaLinha1;
}
public String getMensagemNotaLinha2() {
return mensagemNotaLinha2;
}
public void setMensagemNotaLinha2(String mensagemNotaLinha2) {
changeSupport.firePropertyChange("mensagemNotaLinha2", this.mensagemNotaLinha2, mensagemNotaLinha2);
this.mensagemNotaLinha2 = mensagemNotaLinha2;
}
public List carregarServicos() {
return getListaServicos();
}
public int getIndexServico() {
return indexServico;
}
public void setIndexServico(int indexServico) {
this.indexServico = indexServico;
}
public Servico getServico() {
return servico;
}
public void setServico(Servico servico) {
changeSupport.firePropertyChange("servico", this.servico, servico);
this.servico = servico;
}
}
//---------- Eu quero popular o ComboBox com a propriedade listaServicos que contem uma List do tipo Servico
/*
* Servico.java
*/
package com.sikgraf.listas;
import com.jgoodies.binding.beans.ExtendedPropertyChangeSupport;
import java.beans.PropertyChangeListener;
public class Servico {
private Integer codigo;
private String nome;
private ExtendedPropertyChangeSupport changeSupport = new ExtendedPropertyChangeSupport(this);
/**
* Creates a new instance of Servico
*/
public Servico() {}
public Servico(int codigo, String nome) {
this.setCodigo(codigo);
this.setNome(nome);
}
public Integer getCodigo() {
return codigo;
}
public void setCodigo(Integer codigo) {
changeSupport.firePropertyChange("codigo", this.codigo, codigo);
this.codigo = codigo;
}
public void addPropertyChangeListener(PropertyChangeListener x) {
changeSupport.addPropertyChangeListener(x);
}
public void removePropertyChangeListener(PropertyChangeListener x) {
changeSupport.removePropertyChangeListener(x);
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
changeSupport.firePropertyChange("nome", this.nome, nome);
this.nome = nome;
}
// Esse metodo decide qual proprieda sera mostrada no ComboBox
public String toString() {
return getNome();
}
}
// ------------- No View tenho
ordemServicoFormBean = new OrdemServicoFormBean();
BeanAdapter adapter = new BeanAdapter(ordemServicoFormBean, true);
// set the presentation model up to the first bean.
//PresentationModel beanOSPresentationModel = new PresentationModel(ordemServicoFormBean.getListaServicos().get(0), trigger);
PresentationModel beanOSPresentationModel = new PresentationModel(ordemServicoFormBean.getListaServicos().get(0));
ValueModel beanProperty = new PropertyAdapter(beanOSPresentationModel, "bean", true); ValueModel servicosModel = new PropertyAdapter(ordemServicoFormBean, "listaServicos", true); ComboBoxAdapter comboServicosModel = new ComboBoxAdapter(ordemServicoFormBean.getListaServicos(), servicosModel);
comboServicosOrcamentoOrdem.setModel( comboServicosModel );
Suponha que eu queira que minha listaServicos tenha o seguinte conteudo (lembrando que quero carregar dinamicamente atraves de um DAO esses dados na List)
List<Servico> theList = new ArrayList<Servico>();
theList.add( new Servico(1, "Service #1") );
theList.add( new Servico(2, "Service #2") );
theList.add( new Servico(3, "Service #3") );
O ComboBox mostra apenas uma linha e nesse formato:
[Service #1, Service #2, Service #3]
O que estou fazendo errado?