2014-03-04 2 views
0

저는 10 장의 카드를 생성하는 자바 프로그램을 만들려고합니다. 카드는 gif 형식입니다. 나는 이것들을 배열에 넣으려고했지만, 어떻게해야할지 모르겠다. 게임 카드는 엄격한 배치없이 이상적으로 표시되어야합니다. 카드는 어쨌든 남겨 둡니다. 앞으로 나아갈 수있는 조언이 필요합니다. 지금 그대로서도 오류 메시지가 표시되지 않습니다. 그러나 그 상자는 비어 있습니다. 어떻게해야합니까? 사전에루프 이미지, java gui?

감사

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; 
} 
} 

table.java 이미지 아이콘 그래서 그냥 용기 등으로 그 ImageIcons를 추가, 스윙 구성 요소입니다

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]); 
    } 
} 

답변

1

JPanel (JPanel을 확장 한 카드 일 수도 있음). 컨테이너 자체에 포함 된 Swing 구성 요소가 그려 지므로 수동으로 그릴 필요가 없습니다.

1

적어도 어디에서나 genCards()를 호출해야합니다. 아마도 생성자 또는 init 메소드에서 :

public Cards(){ 
    genCards(); 
}