Bob*_*bby 1 java user-interface swing
所以我有这个我正在研究的程序,它在带有标签的框架中显示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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
首先,删除添加标签的3行:
add(new JLabel());
Run Code Online (Sandbox Code Playgroud)
然后,在你得到的地方ImageIcon,这样做:
ImageIcon t = deckOfCards[r];
JLabel label = new JLabel(t);
add(label);
Run Code Online (Sandbox Code Playgroud)
但是,我建议您不要设置布局并直接向您的组件添加组件JFrame.您最好创建一个新的JPanel并将其添加到您的内容窗格中JFrame:
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(3, 1, 5, 5));
getContentPane().add(panel);
Run Code Online (Sandbox Code Playgroud)
然后,添加标签时,将它们添加到面板中.
panel.add(new JLabel(t));
Run Code Online (Sandbox Code Playgroud)
既然你更新了问题,我正在更新下面的答案.首先,声明3 JLabel,实例化它们并将它们添加到面板,如上所述.
JLabel card1 = new JLabel();
JLabel card2 = new JLabel();
JLabel card3 = new JLabel();
Run Code Online (Sandbox Code Playgroud)
然后,在阅读了ImageIcon每个之后,您可以这样设置JLabel图像:
card1.setIcon(t);
Run Code Online (Sandbox Code Playgroud)