Dúvida Com JList

Caros,

estou fazendo uma classe RemoverProduto, que removerá produtos da minha ArrayList.
O que acontece é que cheguei em uma parte que não sei como fazer; olhem a classe e eu explicarei a dúvida:

[code]
package pkgTP;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class RemoverProduto extends JFrame implements ActionListener{

private JList lprodutos;
private JButton remover;
private String l1 = "  Produtos Encontrados:    ";
private String l2 = " ";
private DefaultListModel listModel = null;

public RemoverProduto(){
super("Procurar Produto");
setSize(400,200);
getContentPane().setLayout(new GridLayout(1,1));
JPanel pbuscapro = new JPanel(new GridLayout(1,2));

remover = new JButton("Remover");
listModel = new DefaultListModel();
lprodutos = new JList(listModel);


lprodutos.setVisibleRowCount(5); 
lprodutos.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
pbuscapro.add(lprodutos);
pbuscapro.add(new JScrollPane(lprodutos));
pbuscapro.add(remover);
getContentPane().add(pbuscapro);

remover.addActionListener(this);

popLista();

}

public void popLista(){
	
	
	 
	
	listModel.addElement(l1);
	listModel.addElement(l2);
	
	for ( int i = 0; i < Testes.loja.produto.size(); i++ ){
		if(Testes.loja.produto.get(i) instanceof Calcado){
			Calcado cal = (Calcado) Testes.loja.produto.get(i);
	    listModel.addElement("Descrição: "  + cal.getDescricao() + "   Cor: " + cal.getCor() + "  Número: " + cal.getNumero() + "  Gênero:  " + cal.getGenero());} 
		
	
	}	
}

public void actionPerformed(ActionEvent action){
	
	/*String desc;
	String cor;
	int num;
	String gen;*/
	
	int index = lprodutos.getSelectedIndex();
	/*desc = cal.getDescricao();
	cor = cal.getCor();
	num = cal.getNumero();
	gen = cal.getGenero();*/
	listModel.remove(index);
	//Testes.loja.excluirProdutoCalcado(desc, num, cor, gen);
	
	
	
	
	
	
}

}[/code]

Bom, como vcs podem ver, coloco todos os itens de um determinado tipo de produto em um JList, que será
visualizada pelo usuário, o que eu quero fazer é que quando o usuário selecionar um produto na JList e clicar em remover
esse produto seja excluido da minha ArrayList Produto, o que acontece é que tenho um método na minha classe Loja, olhem:

[code]public void excluirProdutoCalcado(String descricao, int num, String cor , String genero){

	try{
	int cont = 0;
	for(int i = 0; i < produto.size(); i++){
		Calcado pro = (Calcado) produto.get(i);
	if(pro.getDescricao().equalsIgnoreCase(descricao) && pro.getNumero() == num && pro.getCor().equalsIgnoreCase(cor) && pro.getGenero().equalsIgnoreCase(genero)){
	int op = JOptionPane.showConfirmDialog(null, "Você deseja realmente remover esse Produto?",  
	         "Remover Produto - Calçados", JOptionPane.OK_CANCEL_OPTION); 
			
	        cont = 1;
	        if (op == JOptionPane.CANCEL_OPTION)
	        	break;
	        
	        produto.remove(i);
	              
	        if (op == JOptionPane.OK_OPTION)  
	            JOptionPane.showMessageDialog(null, "Produto removido com sucesso!", "Remover Produto - Calçados", JOptionPane.INFORMATION_MESSAGE);  
	        break;
		}
	if(cont != 1)
		JOptionPane.showMessageDialog(null, "Nenhum Produto encontrado!", "Remover Produto - Calçados", JOptionPane.ERROR_MESSAGE);
	}}
	catch(ClassCastException cb){
		JOptionPane.showMessageDialog(null, "Nenhum Produto Cadastrado!", "Remover Produto - Calçados", JOptionPane.ERROR_MESSAGE);
	}
	
}
[/code]

que recebe como parâmetros as caractetrísticas desse produto e o encontra na ArrayList para poder excluí-lo, e minha dúvida é justamente essa,

como pegar esses parâmetros na JList e passar para o método, se olharem na classe acima eu tentei fazer isso, mas não deu certo.

Estou aceitando correções no código ou outra solução mais eficiente que alguem tiver.

Fico no aguardo.

Grato
Pablo

Alguem poderia ajudar, pois estou realmente necessitado.

Grato

O comando abaixo está gerando um código final diferente do objetivo buscado

       if(pro.getDescricao().equalsIgnoreCase(descricao) && pro.getNumero() == num && pro.getCor().equalsIgnoreCase(cor) && pro.getGenero().equalsIgnoreCase(genero)){  

reescreva-o separando com ‘(’ e ‘)’ cada sub-parte, como:

       if ( (pro.getDescricao().equalsIgnoreCase(descricao)) && (pro.getNumero() == num) && (pro.getCor().equalsIgnoreCase(cor)) && (pro.getGenero().equalsIgnoreCase(genero)) ) {