随机选择一个对象

时间:2011-10-09 17:02:40

标签: java

如何随机显示图片文件夹中的卡片显示,而不是始终显示某张卡片(例如1.png)?

这是我的代码。我知道如何随机化数字,但不是在这种情况下使用set文件夹。

package java_gui;

import java.awt.GridLayout;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Images extends JFrame {
    //create JLabels
    JLabel card1 = new JLabel();
    JLabel card2 = new JLabel();
    JLabel card3 = new JLabel();

    public Images(){
        //create GridLayout
        setLayout(new GridLayout(1,4,5,5));
        //set images
        card1.setIcon(new ImageIcon("image/card/card/1.png"));
        card2.setIcon(new ImageIcon("image/card/card/2.png"));
        card3.setIcon(new ImageIcon("image/card/card/3.png"));
        //add JLabels
        add(card1);
        add(card2);
        add(card3);
    }
}

2 个答案:

答案 0 :(得分:1)

已经有一个很好的算法来改组数组的元素。查看Fisher-Yates shuffle

答案 1 :(得分:1)

为了使图像随机化而不重复它们,您应首先创建一个包含所需图像数量的数组。该数组将包含:

cardsArrayNumber = {1, 2, 3}

然后将其洗牌:

cardsArrayNumber = {3, 1, 2}

然后通过这个数组分配图像:

 card1.setIcon(new ImageIcon("image/card/card/" + String.valueOf(array[0]) + ".png"));
 card2.setIcon(new ImageIcon("image/card/card/" + String.valueOf(array[1]) + ".png"));
 card3.setIcon(new ImageIcon("image/card/card/" + String.valueOf(array[2]) + ".png"));

提示:如果您的卡片是阵列的一部分并且您开始从0开始编号图像会更好,这样您就可以轻松处理任意数量的图像:

for (int i = 0; i < cardsArray.length; i++) {
    cardsArray[i].setIcon(new ImageIcon("image/card/card/" + String.valueOf(array[i]) + ".png"));
}

这是shuffle数组和JavaDoc

的方法