В настоящее время я пытаюсь сделать видеопокер. До сих пор он состоит из 2-х классов: Карточка с int value, char suit и boolean checked. Картой является JButton. Затем палубу со стопкой объектов Карты.Почему мой JButton не обновит изображение?
JButton в классе VideoPoker просто не обновит ImageIcon , когда я рисую карту, и я не могу понять, почему для меня жизнь. Он обновляет его, когда мне нужно фоновое изображение, а затем снова, когда мне нужно исходное изображение, так почему бы и нет новой карты?
ниже мой код
import javax.swing.*;
import java.awt.event.*;
public class VideoPoker extends JPanel implements ActionListener {
private Deck deck;
private Card[] cards;
private JButton draw;
private final int MAXCARDS = 5;
public VideoPoker() {
deck = new Deck();
cards = new Card[MAXCARDS];
for(int i = 0; i < MAXCARDS; i++) {
cards[i] = deck.Draw();
cards[i].addActionListener(this);
add(cards[i]);
cards[i].setIcon(new ImageIcon
("Cards/" + cards[i].getValue() +
cards[i].getSuit() + ".png"));
}
draw = new JButton("Draw");
draw.addActionListener(this);
add(draw);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == draw) {
int checked = 0;
for(int i = 0; i < MAXCARDS; i++) {
if(cards[i].getChecked()) {
cards[i] = deck.Draw();
cards[i].setIcon(new ImageIcon
("Cards/" + cards[i].getValue() +
cards[i].getSuit() + ".png"));
checked++;
}
}
}
if(e.getSource() instanceof Card) {
Card source = (Card)e.getSource();
if(!source.getChecked()) {
source.setChecked(true);
source.setIcon(new ImageIcon("Cards/back.png"));
}
else {
source.setChecked(false);
source.setIcon(new ImageIcon
("Cards/" + source.getValue() +
source.getSuit() + ".png"));
}
}
}
У вас есть сообщение об ошибке, stacktrace или что-то еще? – mthmulders
Нет, ничего. Прежде чем я добавил (e.getSource() экземпляр Card), я получал исключение ClassCastException. Но это неуместно, я думаю, нет. – Eric
Вы действительно попадаете в место, где карты снова «разворачиваются», чтобы показать их исходное изображение? – mthmulders