java - 循环图像,java gui?

标签 java swing jpanel jlabel imageicon

我正在尝试创建一个生成 10 张扑克牌的 java 程序。扑克牌是 gif 格式的。我尝试将它们放入数组中,但不知道如何进行。理想情况下,扑克牌的展示方式不应有严格的摆放位置。反正卡都留下来了。需要一些技巧才能取得成功。就目前情况而言,我没有收到任何错误消息。但出现的盒子是空的。我应该怎么办?

提前致谢

cards.java

public abstract class cards extends JPanel {

Random gen = new Random();
int noOfCards = 10;
int line;
int col;
boolean faceUp;
String back = "img/b2fv.gif";
JLabel[] stackLabel = new JLabel[noOfCards];
ImageIcon[] stack = new ImageIcon[noOfCards];

ImageIcon [][]  cards = {
        {new ImageIcon("img/c1.gif"), new ImageIcon("img/d1.gif"), new ImageIcon("img/h1.gif") , new ImageIcon("img/s1.gif")},
        {new ImageIcon("img/c2.gif"), new ImageIcon("img/d2.gif"), new ImageIcon("img/h2.gif") , new ImageIcon("img/s2.gif")},
        {new ImageIcon("img/c3.gif"), new ImageIcon("img/d3.gif"), new ImageIcon("img/h3.gif") , new ImageIcon("img/s3.gif")},
        {new ImageIcon("img/c4.gif"), new ImageIcon("img/d4.gif"), new ImageIcon("img/h4.gif") , new ImageIcon("img/s4.gif")},
        {new ImageIcon("img/c5.gif"), new ImageIcon("img/d5.gif"), new ImageIcon("img/h5.gif") , new ImageIcon("img/s5.gif")},
        {new ImageIcon("img/c6.gif"), new ImageIcon("img/d6.gif"), new ImageIcon("img/h6.gif") , new ImageIcon("img/s6.gif")},
        {new ImageIcon("img/c7.gif"), new ImageIcon("img/d7.gif"), new ImageIcon("img/h7.gif") , new ImageIcon("img/s7.gif")},
        {new ImageIcon("img/c8.gif"), new ImageIcon("img/d8.gif"), new ImageIcon("img/h8.gif") , new ImageIcon("img/s8.gif")},
        {new ImageIcon("img/c9.gif"), new ImageIcon("img/d9.gif"), new ImageIcon("img/h9.gif") , new ImageIcon("img/s9.gif")},
        {new ImageIcon("img/c10.gif"), new ImageIcon("img/d10.gif"), new ImageIcon("img/h10.gif") , new ImageIcon("img/s10.gif")},
        {new ImageIcon("img/cj.gif"), new ImageIcon("img/dj.gif"), new ImageIcon("img/hj.gif") , new ImageIcon("img/sj.gif")},
        {new ImageIcon("img/cq.gif"), new ImageIcon("img/dq.gif"), new ImageIcon("img/hq.gif") , new ImageIcon("img/sq.gif")},
        {new ImageIcon("img/ck.gif"), new ImageIcon("img/dk.gif"), new ImageIcon("img/hk.gif") , new ImageIcon("img/sk.gif")},
        {new ImageIcon("img/jr.gif"), new ImageIcon("img/jb.gif")}
};

public JLabel[] genCards(){
    try{
        for(int i = 0; i < noOfCards; i++){
            line = gen.nextInt(14);
            col = gen.nextInt(4);
            faceUp = gen.nextBoolean();

            stack[i] = cards[line][col];
            stackLabel[i] = new JLabel();
            ImageIcon img;
            stackLabel[i].setIcon(img = stack[i]);
            this.add(stackLabel[i]);
        }
    }catch(ArrayIndexOutOfBoundsException e){
        System.out.println(e);
        System.out.println("Problem med array");
    }
    return stackLabel;
}
}

表.java

public class table extends cards {

public void paintComponent(Graphics g){
    super.paintComponent(g);

    for(int i = 0; i < this.stackLabel.length; i++){
        //System.out.println(stack[i]);
    }
}

最佳答案

ImageIcon 是一个 Swing 组件,因此只需将这些 ImageIcons 添加到 JPanel 之类的容器中(也许 Cards 扩展了您拥有的 JPanel)。容器本身会绘制它所包含的 Swing 组件,因此您不必手动绘制它们。

关于java - 循环图像,java gui?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22181226/

相关文章:

java - JSF 的安全问题是什么?

java - 如何在不同的类中设置两个具有相同 JPanel 内容的 JScrollPanes

java - 如何替换 Java Swing 中的 JTree 组件?

java - 将事件从 child 传递给 parent

java - 无法重新添加相同的面板

java - 我的数组中的位置 [1] 无法注册

java - SwingX JXTreeTable 中的自定义树单元格编辑

java - 根据其中一个字段对对象列表进行排序

java - JToolBar 防止最小化

java - 如何将 JButton 添加到 GridLayout?