如何随机显示图片文件夹中的卡片显示,而不是始终显示某张卡片(例如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);
}
}
答案 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"));
}
的方法