Dúvida Com JList

2 respostas
P

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:
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);
		
		
		
		
		
		
	}
	
	

}
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:
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);
		}
		
	}

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

2 Respostas

P

Alguem poderia ajudar, pois estou realmente necessitado.

Grato

Marcio_Lima

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)) ) {
Criado 24 de novembro de 2010
Ultima resposta 26 de nov. de 2010
Respostas 2
Participantes 2