Tenho na tela que estou fazendo um JComboBox com os clientes, abaixo tenho um JPanel, com um JTextPane, contendo os dados do cliente.
Como faço pra alterar essas informações ao alterar o cliente no JComboBox???
Tenho na tela que estou fazendo um JComboBox com os clientes, abaixo tenho um JPanel, com um JTextPane, contendo os dados do cliente.
Como faço pra alterar essas informações ao alterar o cliente no JComboBox???
Consegui.
Caso alguém precise, segue como fiz.
Tanto o JComboBox que tem os clientes qt o JPanel com as informações do mesmo, estão dentro de um JPanel que representa a aba de dados da nota fiscal em um JTabbedPane. Todos os componentes dessa aba são gerados através de 8 métodos, o combobox no segundo método e as informações do cliente no oitavo. Ao trocar o combobox, o oitavo método é executado novamente mas com o id do novo cliente passado como parâmetro.
Criação do JComboBox contendo os clientes e a ação do mesmo.
private void adicionaDadosPanel2(NotaFiscal nota) {
/*
* Criação do segundo JPanel
* Cliente
*/
try {
panel2 = new JPanel();
panel2.setLayout(null);
panel2.setBounds(0, 30, 1010, 30);
// Seleciona os clientes pra adicionar no comboBox
ClienteDAO cDAO = new ClienteDAO();
clientes = (ArrayList<Cliente>) cDAO.findAllNFClean();
// Cria o Array de objetos para adicionar no JComboBox
combo2 = new Object[clientes.size()+1];
int i = 0;
// Variavel pra guardar qual opção selecionar
int selecionar = 0;
// Adiciona a opção 'Selecione...' na primeira posição do combo
combo2[i] = "Selecione...";
i++;
for(Cliente cliente : clientes){
// Guarda qual opção selecionar
if(nota.getIdInstituicaoDestinatario() == cliente.getIdInstituicao())
selecionar = i;
// Verifica o estado pra adicionar
String estado = "";
if((Endereco)cliente.getEnderecos().get(0)!=null)
estado = " ("+((Endereco)cliente.getEnderecos().get(0)).getMunicipio().getSiglaUF()+")";
combo2[i] = cliente.getCodigo()+"/"+cliente.getRazaoSocial()+estado;
i++;
}
// JLabel, ComboBox e CheckBox do destinatário
destLabel = new JLabel("Destinatário");
destLabel.setBounds(1, 6, 100, 20);
panel2.add(destLabel);
destComboBox = new JComboBox(combo2);
destComboBox.setBackground(Color.WHITE);
// Seleciona o cliente a partir da nota
destComboBox.setSelectedIndex(selecionar);
// Muda as informações do cliente ao alterar o combobox
destComboBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JComboBox cb = (JComboBox) e.getSource();
int select = cb.getSelectedIndex();
if(select == 0){
adicionaDadosPanel8(select);
} else {
Cliente cl = clientes.get(select-1);
adicionaDadosPanel8(cl.getIdInstituicao());
notaPrincipal.setIdInstituicaoDestinatario(cl.getIdInstituicao());
}
}
});
destComboBox.setBounds(101, 6, 700, 20);
panel2.add(destComboBox);
usarEnderecoEntrega = new JCheckBox("Usar endereço de entrega");
// Seta o check de acordo com a nota
if(nota.isUsarEndereco())
usarEnderecoEntrega.setSelected(true);
usarEnderecoEntrega.setBounds(805, 6, 200, 20);
panel2.add(usarEnderecoEntrega);
// Adiciona o segundo JPanel no Jpanel principal
abaDadosDaNota.add(panel2);
} catch (Exception e) {
e.printStackTrace();
}
}
Informações do cliente selecionado:
private void adicionaDadosPanel8(long idInstituicaoDestinatario) {
/*
* Criação do oitavo JPanel
*/
try {
panel8 = new JPanel();
panel8.setLayout(null);
panel8.setBounds(0, 285, 1000, 300);
panel8.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder("Cliente"),
BorderFactory.createEmptyBorder(5,5,5,5)));
// Verifica o valor do idInstituicaoDestinatario. Caso 0, sem cliente selecionado.
if(idInstituicaoDestinatario == 0){
String dados = "Nenhum cliente selecionado";
// Cria o JTextPane e adiciona o texto
clientePane = new JTextPane();
clientePane.setBounds(5, 15, 900, 270);
clientePane.setBackground(null);
clientePane.setText(dados);
// Adiciona o Panel do cliente no JPanel8
panel8.add(clientePane);
// Adiciona o oitavo JPanel no Jpanel principal
abaDadosDaNota.add(panel8);
} else {
// Seleciona o cliente da nota
ClienteDAO cDAO = new ClienteDAO();
Cliente cliente = (Cliente) cDAO.findByInstituicao(idInstituicaoDestinatario);
// Seleciona as informações do cliente que serão adicionadas
String dados = "";
// Código e razão social
dados += cliente.getCodigo()+" - "+cliente.getRazaoSocial()+"\n";
// Status
dados += cliente.getStatusDecodificada()+"\n";
// CNPJ
dados += cliente.getCnpj()+"\n";
// Endereço
if((Endereco)cliente.getEnderecos().get(0)!=null){
Endereco endereco = (Endereco)cliente.getEnderecos().get(0);
dados += endereco.getNome()+"\n";
dados += endereco.getLogradouro()+" - "+endereco.getNumero()+" - "+endereco.getComplemento()+"\n";
Municipio municipio = endereco.getMunicipio();
dados += endereco.getBairro()+", "+municipio.getNomeMunicipio()+" ("+municipio.getSiglaUF()+")\n";
dados += endereco.getCep()+"\n";
dados += cliente.getTelefone1()+"\n";
}
// Cria o JTextPane e adiciona as informações do cliente
clientePane = new JTextPane();
clientePane.setBounds(5, 15, 900, 270);
clientePane.setBackground(null);
clientePane.setText(dados);
// Adiciona o Panel do cliente no JPanel8
panel8.add(clientePane);
// Adiciona o oitavo JPanel no Jpanel principal
abaDadosDaNota.add(panel8);
}
} catch (Exception e) {
e.printStackTrace();
}
}