我已经按数组创建了 9 个 JLabels。并且它具有使用 mouseClicked(MouseEvent src){...} 方法的通用事件侦听器,在这里我发现问题是,如何识别单击了哪个 JLabel?
说,如果点击标签[0],那么我想显示“点击标签0”,如果点击标签[1],那么我想显示“点击标签1”
我可以执行此操作吗?如果是,那么如何?
注意:-我找到了一些答案,说明添加自定义“id”属性,但首先,如果存在任何默认方法,我更喜欢。
添加标签
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());
}
}
您可以循环数组,将事件源与数组中的每个元素进行比较...
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
...