1

プログラムが読み込まれると、プレースホルダーの画像が既にあります

ImageIcon icon = new ImageIcon(Path + "Hangman1.jpg");   
JLabel label = new JLabel();
label.setIcon(icon);

これで、ボディ部分を出力する if ステートメントの書き方がわかりました

if (guesses >= 1) System.out.print("HEAD ");
if (guesses >= 2) System.out.print("BODY ");
if (guesses >= 3) System.out.print("LEFT ARM ");
if (guesses >= 4) System.out.print("RIGHT ARM ");
if (guesses >= 5) System.out.print("LEFT LEG ");
if (guesses >= 6) System.out.print("RIGHT LEG ");

しかし、通常の System.out.print を使用する代わりに、画像を呼び出したい (画像を変更したい)

4

2 に答える 2

2

何かのようなもの

String imageName = null;    

if (guesses >= 1) imageName = "Head.jpg";
if (guesses >= 2) imageName = "Body.jpg";
if (guesses >= 3) imageName = "LeftArm.jpg";
if (guesses >= 4) imageName = "RightArm.jpg";
if (guesses >= 5) imageName = "LeftLeg.jpg";
if (guesses >= 6) imageName = "RightLeg.jpg";

ImageIcon icon = null;
if (imageName != null) {
    icon = new ImageIcon(Path + File.seperator + imageName);
}

label.setIcon(icon);

明らかに、各画像は互いに追加する必要があります...

更新しました

PaulBellora が親切にも指摘しているように、前の例は OP の要件を満たすために必要な最も単純なコード変更ですが、それが正しいことを意味するわけではありません。

switch (guesses) {
    case 1:
        imageName = "Head.jpg";
        break;
    case 2:
        imageName = "Body.jpg";
        break;
    case 3:
        imageName = "LeftArm.jpg";
        break;
    case 4:
        imageName = "RightArm.jpg";
        break;
    case 5:
        imageName = "LeftLeg.jpg";
        break;
    case 6:
        imageName = "RightLef.jpg";
        break;
}

少し良いアプローチになります。

少し巧妙なレイアウト管理を行えば、各ボディ パーツに 1 つずつ、代わりに 6 つのラベルを作成できます。

// Global references to the body parts
public static final ImageIcon RIGHT_LEG_ICON = new ImageIcon(Path + File.seperator + "RightLeg.jpg");
public static final ImageIcon LEFT_LEG_ICON = new ImageIcon(Path + File.seperator + "LeftLeg.jpg");
public static final ImageIcon RIGHT_ARM_ICON = new ImageIcon(Path + File.seperator + "RightArm.jpg");
public static final ImageIcon LEFT_ARM_ICON = new ImageIcon(Path + File.seperator + "LeftArm.jpg");
public static final ImageIcon BODY_ICON = new ImageIcon(Path + File.seperator + "Body.jpg");
public static final ImageIcon HEAD_ICON = new ImageIcon(Path + File.seperator + "Head.jpg");

// Used as fillers to allow the layout manager to maintain the layout
public static final ImageIcon BLANK_LEG_ICON = new ImageIcon(Path + File.seperator + "BlankLeg.jpg");
public static final ImageIcon BLANK_ARM_ICON = new ImageIcon(Path + File.seperator + "BlankArm.jpg");
public static final ImageIcon BLANK_BODY_ICON = new ImageIcon(Path + File.seperator + "BlankBody.jpg");
public static final ImageIcon BLANK_HEAD_ICON = new ImageIcon(Path + File.seperator + "BlanHead.jpg");

...

// Setup the initial state...(probably in the constructor or when the game rests)
rightLegLabel.setIcon(BLANK_LEG_ICON);
leftLegLabel.setIcon(BLANK_LEG_ICON);
rightArmLabel.setIcon(BLANK_ARM_ICON);
leftArmLabel.setIcon(BLANK_ARM_ICON);
bodyLabel.setIcon(BLANK_BODY_ICON);
headLabel.setIcon(BLANK_BODY_ICON);

...

// As the guesses change...
switch (guesses) {
    case 6:
        rightLegLabel.setIcon(RIGHT_LEG_ICON);
    case 5:
        leftLegLabel.setIcon(LEFT_LEG_ICON);
    case 4:
        rightArmLabel.setIcon(RIGHT_ARM_ICON);
    case 3:
        leftArmLabel.setIcon(LEFT_ARM_ICON);
    case 2:
        bodyLabel.setIcon(BODY_ICON);
    case 1:
        headLabel.setIcon(HEAD_ICON);
}
于 2012-08-22T01:07:34.743 に答える
1

それぞれ独自の「ハングマン」状態の 7 つのイメージを作成する必要があります。そして、推測が失敗するたびに適切な画像をロードします。System.out.print("HEAD ")代わりに呼び出しを呼び出しに置き換えlabel.setIcon()ます。

于 2012-08-22T01:07:12.560 に答える