目前我正在尝试制作视频扑克。到目前为止,它由2个类组成: 具有int值,char套装和检查布尔值的卡片。卡是JButton。然后用一堆卡片对象装饰甲板。为什么我的JButton不更新imageicon?
将JButton的电动扑克上课的时候我抽一张牌只是将不会更新的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"));
}
}
}
你有任何错误消息,堆栈跟踪或任何? – mthmulders 2013-04-09 07:28:20
不,没有。在添加(e.getSource()instanceof Card)之前,我得到一个ClassCastException。但我认为这是无关紧要的,所以不是。 – Eric 2013-04-09 07:31:53
您是否真的到过卡片被“翻转”的地方以显示其原始图像? – mthmulders 2013-04-09 07:35:49