2011-10-09 104 views
0

如何隨機顯示我的圖像文件夾中的卡片,而不是始終顯示某個卡片(例如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); 
    } 
} 

回答

1

已經有用於洗牌的數組的元素的好的算法。看看Fisher-Yates shuffle

+0

不僅已經有一個算法,它的權利被燒入'Collections.shuffle'(http://docs.oracle.com/javase/6/docs/api/java/util/Collections.html#shuffle(java) .util.List))。 – Pops

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