首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换imageIcon

替换imageIcon
EN

Stack Overflow用户
提问于 2010-11-28 08:24:39
回答 2查看 385关注 0票数 0

我有一个名为'AmountWrongGuessed‘的值,它给出了用户猜单词时错误猜测的数量。

每次在数组列表中找不到这个单词时,AmountWrongGuessed goes ++。(对此进行了测试,并使其工作正常)

现在的问题是,每次AmountWrongGuessed上升1次,它就应该显示一个ImageIcon。

但它总是显示最后一个图像图标,并跳过其他图标。

我不使用布局管理器(它的设置为null,如果这在总图片setLayout =null中有任何不同)

同时,当初始化这个游戏时,当你猜到这个游戏是默认的0时,它也不会显示第一个图像图标。(我以前使用不同的标签将每个图标添加到相同的位置上,但随后出现了问题,只显示了第一个图像,没有任何更改)。

代码语言:javascript
复制
public HrView(Hrgame hg) {
    this.hg = hg;

    CreateComponents();
    SetLayoutComponents();
    UpdateComponents();
    AddListeners();
}

图像的制作:

代码语言:javascript
复制
 private void CreateComponents() {

    hang0 = new ImageIcon("hang0.gif");
    lblHang = new JLabel(hang0);
    lblHang.setLocation(60, -10);
    lblHang.setSize(200, 200);       

    hang1 = new ImageIcon("hang1.gif");
    lblHang = new JLabel(hang1);
    lblHang.setLocation(60, -10);
    lblHang.setSize(200, 200);

    hang2 = new ImageIcon("hang2.gif");
    lblHang = new JLabel(hang2);
    lblHang.setLocation(60, -10);
    lblHang.setSize(200, 200);
}

  private void AddListeners()
{
    btnCheck.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent e)
        {

            hg.Input(tfToGuessInput.getText().toLowerCase());
            Pictures();
            lblHang.updateUI();

        }
    });
}


private void Pictures()
{
    //works, does increment
    System.out.println(hg.getAmountWrongGuessed());

    if (hg.getAmountWrongGuessed() == 0) {
        add(lblHang);
    }
    if (hg.getAmountWrongGuessed() == 1) {
        add(lblHang);
    }
    if (hg.getAmountWrongGuessed() == 2) {
        add(lblHang);
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-28 08:35:50

CreateComponents()之后,属性lblHang引用您最后创建的标签(包含图像hang2的标签)。为了以后使用这三个标签,你需要有三个标签,然后你可以在Pictures()中使用。

顺便说一句,在Java中,命名约定是方法名以小写字符开头。

票数 0
EN

Stack Overflow用户

发布于 2010-11-28 09:54:44

代码语言:javascript
复制
import javax.swing.*;
import javax.swing.JLabel;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.ImageIcon;
import java.awt.BorderLayout;
import java.awt.*;
import java.awt.event.*;

public class testgui{

private static int flag = 1;

public static void main(String[] args){

final JLabel label = new JLabel("",new ImageIcon("0.jpg"),JLabel.CENTER);
final JLabel label1 = new JLabel("",new ImageIcon("1.jpg"),JLabel.CENTER);
final JLabel label2 = new JLabel("",new ImageIcon("2.jpg"),JLabel.CENTER);

final JFrame frame = new JFrame();

final JPanel panel = new JPanel();

frame.add(panel,BorderLayout.CENTER);

frame.setVisible(true);

final JButton button = new JButton("Next");

frame.add(button,BorderLayout.SOUTH);

panel.add(label);

frame.pack();

button.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){
        if(flag==0){
        System.out.println("0.jpg");
        //label image, flag increment
            flag = flag+1;
            panel.removeAll();
            panel.add(label);
            frame.pack();

        } else if(flag==1){
        System.out.println("1.jpg");
        //label1 image, flag increment
            flag = flag+1;
            panel.removeAll();
            panel.add(label1);
            frame.pack();
        } else if (flag==2){
        System.out.println("2.jpg");
        //label2 image, reset flag to 0
            flag = 0;
            panel.removeAll();
            panel.add(label2);
            frame.pack();
        }
        else{
            System.out.println("Wrong flag number !");
        }
        panel.validate();
        panel.updateUI();
        }
    });
}
    }

我认为,如果您想要切换图像,使用jlabels,上述代码将有所帮助。这将有助于旋转包含图像的jlabels,但是这些代码并没有被优化。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4295971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档