GUI ImageIcon卡片组

时间:2012-09-28 16:27:42

标签: java swing user-interface

所以我有这个程序,我正在使用标签在框架中显示3张随机卡片。到目前为止,我已将它分配给一组ImageIcons,然后将它们洗牌。我的问题是,我现在如何将它们分配给JLabels。请原谅我这个愚蠢的问题,因为我知道它很简单,但我使用GUI非常新,它让我害怕大声笑

到目前为止,这是我的代码:

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

1 个答案:

答案 0 :(得分: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);