Estou com um projeto da faculdade pra terminar e preciso de ajuda. É um jogo de cartas. Eu construí um ArrayList para armazenar as cartas e listando os elementos dessa lista em um Jlabel através de um for. Até aqui tudo bem, no entanto, preciso que cada vez que um elemento dessa lista seja removido ou adicionado, o Jlabel onde as imagens estão seja atualizado e mostra o novo número de cartas. Essa exibição atualizada das cartas poderá ser ativada através de um botão “pegarCarta” ou “Descartar”. Já tentei usar o repaint() mas não tive sucesso. Espero que possam me ajudar! Abaixo segue o código(Desculpem a bagunça mas estou testando e nem sempre lembro de organizar o código antes de ficar pronto):
[code]package ifpb.monteiro.p2.projetoFinal;
import java.awt.EventQueue;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import java.awt.Dimension;
import java.util.ArrayList;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import java.awt.FlowLayout;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class GUITelaJogo extends JFrame {
public ArrayList<String> maoJogador = new ArrayList<>(); // Arraylist com o nome que o jogador terá na mão.
private ArrayList<ImageIcon> lista = new ArrayList<>(); //Arraylista que conterá as cartas(objeto) que tem na mão do jogador*/
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
GUITelaJogo frame = new GUITelaJogo();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public GUITelaJogo() {
maoJogador.add("asPaus"); //Adicionando cartas à mão do jogador
maoJogador.add("doisOuro"); //Adicionando cartas à mão do jogador
maoJogador.add("tresEspadas");//Adicionando cartas à mão do jogador
maoJogador.add("asPaus");//Adicionando cartas à mão do jogador
maoJogador.add("damaPaus");//Adicionando cartas à mão do jogador
maoJogador.add("reiPaus");//Adicionando cartas à mão do jogador
setMaximumSize(new Dimension(0, 0));
setMinimumSize(new Dimension(850, 700));
setVisible(true);
setBounds(100, 100, 450, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(null);
JPanel panel = new JPanel();
panel.setOpaque(false);
panel.setBounds(10, 618, 783, 33);
getContentPane().add(panel);
JButton descartar = new JButton("Descartar");
descartar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
maoJogador.remove(maoJogador.get(0));
lista.remove(lista.get(0));
}
});
repaint();
descartar.setHorizontalTextPosition(SwingConstants.CENTER);
panel.add(descartar);
JButton pegarCarta = new JButton("Pegar carta");
panel.add(pegarCarta);
JButton embaralhar = new JButton("Embaralhar");
panel.add(embaralhar);
JPanel mao = new JPanel();
mao.setLayout(new FlowLayout());
mao.setOpaque(false);
mao.setBounds(10, 486, 783, 125);
getContentPane().add(mao);
JLabel imagemMesa = new JLabel("");
imagemMesa.setBounds(0, 186, 808, 476);
getContentPane().add(imagemMesa);
imagemMesa.setIcon(new ImageIcon(GUITelaJogo.class.getResource("/ifpb/monteiro/p2/projetoFinal/imagens/mesa.png")));
imagemMesa.setPreferredSize(new Dimension(988, 142));
imagemMesa.setOpaque(false);
imagemMesa.setMinimumSize(new Dimension(988, 142));
imagemMesa.setMaximumSize(new Dimension(988, 289));
JButton btnNewButton_3 = new JButton("Sair");
btnNewButton_3.setBounds(704, 622, 89, 23);
getContentPane().add(btnNewButton_3);
// Mao.add(imagemMao);
/* Início código mão jogador */
String caminho = "./imagens/cartas/"; //Caminho onde estão as cartas
ImageIcon icon;
/* Percorre o arraylist com nome das cartas('maoJogador'), joga o caminho completo em icon e adiciona a carta ao arraylist de imagens('lista')*/
for (String carta : maoJogador) {
icon = new ImageIcon(caminho+carta+".gif");
lista.add(icon);
}
for (int i = 0; i < lista.size(); i++) {/* Para cada imagem na lista de imagens, o label receberá as imagens. */
JLabel imagemMao = new JLabel("");
imagemMao.setIcon(new ImageIcon(testeGUI.class.getResource(lista.get(i).toString())));
mao.add(imagemMao);
}
/* Fim código mão jogador */
}
}[/code]
Obrigado.
