2012-09-28 24 views
1

所以我有這個程序,我正在使用的標籤框架中顯示3隨機卡。到目前爲止,我已經將它分配給一組ImageIcons,然後洗牌。我的問題是,我現在如何將它們分配給JLabel。請原諒我的愚蠢的問題,因爲我知道這是一些簡單的,但我很新的使用圖形用戶界面,它讓我感到害怕笑GUI ImageIcon卡片組

這裏是我到目前爲止的代碼:

package assignment2; 
import javax.swing.*; 

import java.awt.*; 
public class Assignment2 extends JFrame{ 
    public Assignment2(){ 

     setLayout(new GridLayout(3,1,5,5)); 
     add(new JLabel()); ///display one random card 
     add(new JLabel()); ////display another random card 
     add(new JLabel()); ////display another random card 
    } 
    public static void main(String[] args) { 

     Assignment2 frame = new Assignment2(); 
     frame.setTitle("MAIN TO THE FRAME"); 
     frame.setSize(600,300); 
     frame.setResizable(true); 
     frame.setVisible(true); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     final int FINAL_CARDS_NUMBER = 54; 

     ImageIcon deckOfCards [] = new ImageIcon [FINAL_CARDS_NUMBER]; 

     for(int i = 0; i <FINAL_CARDS_NUMBER; i++){ 
      deckOfCards[i] = new ImageIcon("C:/card/" + (i + 1) + ".png"); 
     } 

     for (int i = 0; i < FINAL_CARDS_NUMBER; i++) { 
      int r = i + (int) (Math.random() * (FINAL_CARDS_NUMBER-i)); 
      ImageIcon t = deckOfCards[r]; 
      deckOfCards[r] = deckOfCards[i]; 
      deckOfCards[i] = t; 
     } 
    } 
} 

回答

6

首先,刪除3在您添加標籤行:

add(new JLabel()); 

然後,在你所得到的ImageIcon的地方,這樣做:

ImageIcon t = deckOfCards[r]; 
JLabel label = new JLabel(t); 
add(label); 

但是,我建議您不要設置佈局並直接將組件添加到您的JFrame。你最好創建一個新的JPanel並添加到您的JFrame的內容窗格:

JPanel panel = new JPanel(); 
panel.setLayout(new GridLayout(3, 1, 5, 5)); 
getContentPane().add(panel); 

然後,當您添加標籤,將它們添加到面板上。

panel.add(new JLabel(t)); 

現在您更新了問題,我正在更新下面的答案。 首先,聲明3 JLabel,實例化它們並將它們添加到面板中,如上所述。

JLabel card1 = new JLabel(); 
JLabel card2 = new JLabel(); 
JLabel card3 = new JLabel(); 

然後,你讀了ImageIcon每個之後,你可以設置JLabel像這樣:

card1.setIcon(t); 
+0

我需要這個程序來顯示3張隨機卡,雖然這是什麼,我想我可以做與JLabels(抱歉,我忘了指定這個) – Bobby

+0

請看我更新的答案。 –