1

だから私は私が取り組んでいるこのプログラムを持っています。それはラベル付きのフレームに3枚のランダムなカードを表示します。これまでのところ、カードのデッキをImageIconの配列に割り当ててから、それらをシャッフルする必要があります。私の質問は、どうすればそれらを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;
        }
    }
}
4

1 に答える 1

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);
于 2012-09-28T16:31:29.427 に答える