Me ajudem com esse trabalho, por favor!

Gente, eu sei que tem um monte de posts aqui sobre Iterator, e eu já vi muitos deles. Mas nenhum resolveu meu problema… Não sei qual é o erro no meu código e nem SE tem algum erro. Pode só estar faltando um detalhe. Enfim… preciso fazer um programa que envolva Swing e Collections. Um programa que mostre uma telinha com os campos para o usuário digitar: Nome, Quantidade e Preço.
Preciso fazer os botões: Incluir, Alterar, Remover, Mostrar produtos, Vender e Verificar dados de um produto.
Vou colar aqui o Enunciado inteiro, ok?
“Descrição do trabalho: Você deverá criar um programa em JAVA utilizando SWING e COLLECTION que auxilie o ?dono da loja? a resolver o problema apresentado a seguir. Existe uma loja de departamento com diversos produtos. O dono da lojanão sabe ao certo quantos tipos de produtos existem e por isto resolveu cadastrar todos os tipos de produto. A operação de cadastramento implica nas funcionalidades de inclusão, alteração e exclusão do produto. Os produtos possuem três características principais (atributos): nome, quantidade em estoque e preço. Uma vez que todos os produtos estejam cadastrados no sistema o dono deseja ver na tela os produtos em ordem alfabética de seus nomes. O dono da loja deseja que o programa realize uma venda. Isto ocorrerá da seguinte forma: primeiro o atendente procura um determinado produto pelo nome. O sistema mostra o preço do produto na tela. O atendente confirma que é o produto correto e o sistema abate a quantidade do produto em uma unidade. Obs: para simplificação do problema trabalhe com um número reduzido de produtos.”

OK, agora o meu código como está até agora. Eu já fiz a parte de incluir, e estou impacado nos loops necessários para alterar um dado, remover um dado, etc… (Pra alterar, eu preciso que o usuário digite no espaço ‘nome’ o nome do produto e clique no botão Alterar. Então os dados do produto aparecerão na tela e ele simplesmente alterará o que quiser, clicando em incluir posteriormente. Vai dar certo, isso? O caso de Remover é semelhante: o usuário digita o nome do produto que quer remover e clica em Remover… e pronto, o produto é excluído do meu ArrayList.) Muita coisa desse programa eu fiz com ajuda de um colega que manja mto de JAVA, mas que não tem tempo de me ajudar.

[code]package loja;

                ...
ArrayList<Produto> loja = new ArrayList<Produto>();  	Produto p = new Produto(); 
Iterator busca = new ArrayList(loja).iterator(); 
    ...
private JButton getRemover() {
	if (remover == null) {
		remover = new JButton();
		remover.setBounds(new Rectangle(234, 69, 87, 22));
		remover.setText("Remover");
		remover.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent e) {
				if (nome.getText().equals("")) {
					JOptionPane.showMessageDialog(null,"Digite o nome do produto cujos dados serão removidos do sistema");
				} else {
					while (busca.hasNext()){
						Produto p = (Produto) busca.next();
						if (p.getNome().equals(nome.getText())) {
							loja.remove(p);
							JOptionPane.showMessageDialog(null,"O produto selecionado foi removido do sistema");
						} else {
							JOptionPane.showMessageDialog(null,"O nome do produto especificado não existe no sistema. Tente novamente");
							return;
						}
					}
				}
			}
		});
	}
	return remover;
}

private JButton getAlterar() {
	if (alterar == null) {
		alterar = new JButton();
		alterar.setBounds(new Rectangle(235, 39, 86, 23));
		alterar.setText("Alterar");
		alterar.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent e) {
				if (nome.getText().equals("")) {
					JOptionPane.showMessageDialog(null,"Digite o nome do produto cujos dados serão alterados");
				} else {
					while (busca.hasNext()){
						Produto p = (Produto) busca.next();
						if (p.getNome().equals(nome.getText())) {
							quantidade.setText(Integer.toString(p.getQuantidade()));
							preco.setText(Double.toString(p.getPreco()));
						}else{
							JOptionPane.showMessageDialog(null,"O nome do produto especificado não existe no sistema. Tente novamente");
							return;
						}
					}
				}
			}
		});
	}
	return alterar;
}

private JButton getMostrar() {
	if (mostrar == null) {
		mostrar = new JButton();
		mostrar.setBounds(new Rectangle(227, 129, 136, 32));
		mostrar.setText("Mostrar produtos");
		mostrar.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent e) {
				// Collections.sort(loja);
			}
		});
	}
	return mostrar;
}

private JButton getVender() {
	if (vender == null) {
		vender = new JButton();
		vender.setBounds(new Rectangle(235, 101, 85, 21));
		vender.setText("Vender");
		vender.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent e) {
				if (nome.getText().equals("")) {
					JOptionPane.showMessageDialog(null,"Digite o nome do produto que deseja vender e verifique se o preço está correto. Se não estiver, altere-o.");
				} else {
					while (busca.hasNext()){
						if (loja.contains(nome.getText())) {

						}
					}
				}
				nome.setText("");
				quantidade.setText("");
				preco.setText("");
			}
		});
	}
	return vender;
}

private JButton getVer() {
	if (ver == null) {
		ver = new JButton();
		ver.setBounds(new Rectangle(5, 130, 210, 29));
		ver.setText("Verificar dados de um produto");
		ver.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent e) {
				if (nome.getText().equals("")) {
					JOptionPane.showMessageDialog(null,"Digite o nome do produto cujos dados você deseja verificar.");
				} else {
					while (busca.hasNext()){
						if (loja.contains(nome.getText())) {
							quantidade.setText(Integer.toString(p.getQuantidade()));
							preco.setText(Double.toString(p.getPreco()));
						}else{
							JOptionPane.showMessageDialog(null,"O nome do produto especificado não existe no sistema. Tente novamente");
							return;
						}
					}
				}
			}
		});
	}
	return ver;
}

...

[/code]

Classe auxiliar:

[code]package loja;

public class Produto {
private String nome;
private int quantidade;
private double preco;

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

public double getPreco() {
	return preco;
}

public void setPreco(double preco) {
	this.preco = preco;
}

public int getQuantidade() {
	return quantidade;
}

public void setQuantidade(int quantidade) {
	this.quantidade = quantidade;
}

}
[/code]

Espero que possam me ajudar, sinceramente :frowning: