使用Java mouseClicked事件处理程序来更改图标

时间:2014-05-17 14:10:58

标签: java swing jlabel mouselistener imageicon

我有很多标签。我的问题是,如果我点击label2,我就不知道怎么写,然后在label2上设置新图片,但label1没有变化。标签的名称与A1-A10相同。 (我实际上有92个标签,所以这很麻烦。)这是我的代码:

public void mouseClicked(MouseEvent event) {

    if (event.getSource()==A1 && (x==1)) {
        A1.setIcon(new ImageIcon("zoldgomb.jpg"));
        x=2;
    } else if(x==2) {
        A1.setIcon(new ImageIcon("sargagomb.jpg"));
        x=1;
    }
}

修改

好吧,我解决了,大家都是:)

if (event.getSource() instanceof JLabel) {
                if (x == 1) {
                    ((JLabel)event.getSource()).setIcon(new ImageIcon("zoldgomb.jpg"));
                    x = 2;
                } else if (x == 2) {
                    ((JLabel)event.getSource()).setIcon(new ImageIcon("sargagomb.jpg"));
                    x = 1;
    }
}

1 个答案:

答案 0 :(得分:2)

  1. 听起来你应该使用JLabel的数组或ArrayList。
  2. 变量名都应以较低的字母开头,而类名以大写字母开头。此外,您应该避免使用简单的变量名称,例如bs,除非它们被用于琐碎的目的,例如for循环的索引。而是使用具有某种含义的名称,以便您的代码成为自我评论。
  3. 您可以通过调用传递给方法的MouseEvent对象上的getSource()来识别哪个JLabel被按下了。您的参数在上面命名为event
  4. 然后在测试按下哪个JLabel后,调用其setIcon(...)方法。
  5. 最好一次读取图像并将其保存到变量中,而不是在每次单击鼠标时重新读取它们。