2

我已经按数组创建了 9 个 JLabels。并且它具有使用 mouseClicked(MouseEvent src){...} 方法的通用事件侦听器,在这里我发现问题是,如何识别单击了哪个 JLabel?

说,如果点击标签[0],那么我想显示“点击标签0”,如果点击标签[1],那么我想显示“点击标签1”

我可以执行此操作吗?如果是,那么如何?

注意:-我找到了一些答案,说明添加自定义“id”属性,但首先,如果存在任何默认方法,我更喜欢。

4

2 回答 2

3

添加标签

 JPanel pnl = new JPanel(new FlowLayout());
 dd.add(pnl);
 addlistener();
 for (int i = 0; i < 10; i++) {
        pnl.add(lbl[i] = new JLabel("" + i));
        lbl[i].addMouseListener(listern);

 }

听众

public void mouseEnter(MouseEvent me) {
                System.err.println("Hi");
                me.getComponent();
                if(me.getSource() instanceof JLabel){
                    System.out.println("lable"+ ((JLabel)me.getSource()).getText());
                }
            }
于 2012-11-01T06:16:16.917 回答
2

您可以循环数组,将事件源与数组中的每个元素进行比较...

for (int index = 0; index < myLabelArray.length; index++) {
    if (myLabelArray[index].equals(src.getSource())) {
        System.out.println("Label-" + index + " was clicked");
        break;
    }
}

或者你可以“命名”每个标签......

JLabel[] myLabelArray = new JLabel[9];
for (int index = 0; index < 9; index++) {
    JLabel label = new JLabel("...");
    label.setName(Integer.toString(index));
    label.addMouseListener(commonMouseListener);
    myLabelArray[index] = label;
}

然后在你的鼠标监听器中......

public void mouseClicked(MouseEvent evt) {
    System.out.println("Label-" + ((JLabel)evt.getSource()).getName() + " was clicked");
}

或者您可以使用 aMap而不是数组或List...

于 2012-11-01T06:01:39.403 回答