Selecionar a opção de uma JList e mostrar uma imagem ao lado em um JLabel

3 respostas
java
S

Bom pessoal estou aqui de novo para mais uma duvida, estou fazendo um formulário de cadastro de clientes, nele o usuário digita o numero de um telefone e ele tem em uma jlist com as opções celular, residencial e comercial, gostaria que quando for selecionado uma opção aparecesse na jLabel ou alguma outra opção, uma imagem para cada opção selecionado no jlist.

vi umas documentação dizendo para usar getContentPane(), ListCellRenderer, Component getListCellRendererComponent, mas nao estou conseguindo, alguem tem uma luz para este problema.

desde ja fico grato.

3 Respostas

G

Para capturar qual a opção selecionada da lista for alterada, basta adicionar um ListSelectionListener à sua JList, assim, toda vez que o valor selecionado da lista for alterado, o código dentro do método valueChanged será executado.(Caso voc^esteja utilizando o NetBeans ou outro IDE que ajude na construção da GUI(interface gráfica), pode utilizar o auxiliar que gera o método responsável por esse evento e apenas colocar o código responsável por alterar a imagem do JLabel nesse método).
Segue exemplo:

jList.addListSelectionListener(new ListSelectionListener() {

@Override
		public void valueChanged(ListSelectionEvent e) {
			switch(jList.getSelectedIndex())
			{
			case 0://comandos para se a primeira opção da lista foi selecionada
				break;
			case 1://comandos para se a segunda opção da lista foi selecionada
				break;
				//o mesmo se repete para se a lista tiver mais opções
			}
		}
	});

Espero ter ajudado.

S

Gilmartaj estou usando o netbeans sim esqueci de mencionar, vc poderia me explicar como eu utilizo esse auxiliar que gera o método para alterar a imagem no jlabel. E obrigado pela dica.

S

Resolvido ficou assim meu codigo, obrigado.

private void jListTipoItemStateChanged(java.awt.event.ItemEvent evt) {

jblImagemTel.setText("");

    switch (jListTipo.getSelectedItem().toString()) {
        case "Celular": {

            Icon whats;
            whats = new ImageIcon(getClass().getResource("/Imagens/whatsApp_icone_32x32.png"));
            jblImagemTel.setIcon(whats);

            break;
        }
        case "Residencial": {
            Icon residencia;
            residencia = new ImageIcon(getClass().getResource("/Imagens/casa_32x32.png"));
            jblImagemTel.setIcon(residencia);
            break;
        }
        case "Comercial": {
            Icon comercial;
            comercial = new ImageIcon(getClass().getResource("/Imagens/predio_32x32.png"));
            jblImagemTel.setIcon(comercial);
            break;
        }
    }
}
Criado 28 de fevereiro de 2016
Ultima resposta 12 de mar. de 2016
Respostas 3
Participantes 2