Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GUI图像图标卡组_Java_Swing_User Interface - Fatal编程技术网

Java GUI图像图标卡组

Java GUI图像图标卡组,java,swing,user-interface,Java,Swing,User Interface,所以我有一个程序,我正在工作,显示3个随机卡在框架与标签。到目前为止,我已经将一副牌分配给一组图像图标,然后将它们洗牌。我的问题是,现在如何将它们分配给JLabel。请原谅我这个愚蠢的问题,因为我知道这很简单,但我对使用GUI非常陌生,这让我很害怕 以下是我目前的代码: package assignment2; import javax.swing.*; import java.awt.*; public class Assignment2 extends JFrame{ public

所以我有一个程序,我正在工作,显示3个随机卡在框架与标签。到目前为止,我已经将一副牌分配给一组图像图标,然后将它们洗牌。我的问题是,现在如何将它们分配给JLabel。请原谅我这个愚蠢的问题,因为我知道这很简单,但我对使用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;
        }
    }
}
包分配2;
导入javax.swing.*;
导入java.awt.*;
公共类赋值2扩展了JFrame{
公开转让2(){
setLayout(新网格布局(3,1,5,5));
添加(新JLabel());///显示一张随机卡
添加(新JLabel());///显示另一张随机卡
添加(新JLabel());///显示另一张随机卡
}
公共静态void main(字符串[]args){
Assignment2 frame=新Assignment2();
帧。设置标题(“帧的主要部分”);
框架尺寸(600300);
frame.setresizeable(true);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
最终积分最终卡数=54;
ImageIcon deckOfCards[]=新的ImageIcon[最终卡片编号];

对于(int i=0;i首先,删除添加标签的3行:

add(new JLabel());
然后,在获取图像图标的位置执行以下操作:

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

首先,删除添加标签的3行:

add(new JLabel());
然后,在获取图像图标的位置执行以下操作:

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

我需要这个程序来显示3张随机卡片,虽然这是我认为我可以用jlabel做的(对不起,我忘了指定这个)我需要这个程序来显示3张随机卡片,虽然这是我认为我可以用jlabel做的(对不起,我忘了指定这个)