代码之家  ›  专栏  ›  技术社区  ›  Erick

如何使用MouseListener在Java中查找JLabel数组的ID名称

  •  1
  • Erick  · 技术社区  · 7 年前

    我所做的。

    我创建了这样一个JLabel数组:

    static JLabel numbers[] = new JLabel[25];
    

    numbers[each of this] 介于1和80之间的随机数。

    我已添加到每个 numbers[] 阵列a MouseListener .

    我想做一个类似的东西,一旦我按下一个特定的标签来改变自己的背景。但要做到这一点,我必须检测 JLabel 已按下。

    问题是:

    如何获取上数组的名称或编号 这已经被压制了?

    到目前为止,我只知道如何使用以下代码从中获取文本:

    JLabel l = (JLabel) e.getSource();
    int strNumber = Integer.parseInt(l.getText());
    

    numbers[THIS] ,不是文本,而是数组数。

    在Button listener中,我知道如何做到这一点,但在MouseListener中不起作用。。。

    (至少用我尝试的方法( e.getSource().getName(); 等等)

    1 回复  |  直到 7 年前
        1
  •  1
  •   Hovercraft Full Of Eels    7 年前

    你得到了数组,你得到了对按下的JLabel的引用: e.getSource(); ,因此只需遍历数组以找到与另一个匹配的。例如。,

    @Override
    public void mousePressed(MouseEvent e) {
        Object source = e.getSource();
        int index = -1;
    
        for (int i = 0; i < numbers.length; numbers++) {
            if (numbers[i] == source) {
                index = i;
                break;
            }
        }
    }
    
    // here index either == the array item of interest or -1 if no match
    

    附带问题:该阵列应该 保持静态,并且它是静态的,这表明您的程序存在一些需要修复的设计问题。