gpt4 book ai didi

java - 如何从数组列表中获取未通过 mouseclicklistener 选择的对象?

转载 作者:行者123 更新时间:2023-12-01 10:44:54 26 4
gpt4 key购买 nike

我有一个 JLabel[],其中包含 jlabel。我在该数组中存储了 5 个元素,并使用 for 循环为所有这些标签分配了一个 mouseClickListener,如下所示:

JLabel rollHumanLabels[] = new JLabel[5];

for (int humanLabelCounter = 0; humanLabelCounter < rollHumanLabels.length; humanLabelCounter++) {
rollHumanLabels[humanLabelCounter] = new JLabel();
rollHumanLabels[humanLabelCounter].addMouseListener(new MyMouseListener());
}

我有一个鼠标监听器类:

public class MyMouseListener extends MouseAdapter {
public void mouseClicked(MouseEvent e){

}
}

现在我本质上想做的是获取未选择的 JLabels。我尝试了不同的方法,但它们并没有真正起作用。例如。我在 mouseClicked 方法中编写了一堆 if 语句,例如:

if(e.getSource() == rollHumanLabels[0]){//Add it to an an integar of 1 to the arrayList}
if(e.getSource() == rollHumanLabels[1]){//Add it to an integar value of 2 to the rrayList}

然后尝试循环遍历我添加值的数组列表,但我不知道如何获取未选择的值,因为我的逻辑不正确。有人可以告诉我如何继续执行此程序

最佳答案

有几种方法可以做到这一点。其中之一是创建一个自己的 JLabel 实现,您可以在其中保存单击 JLabel 的信息。它可能看起来像这样。

public class MyJLabel extends JLabel {
private boolean selected;

public MyJLabel() {
addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
selected = true;
}
});
}

public boolean isSelected() {
return selected;
}
}

然后,如果你想检查哪些标签没有被选择,你只需简单地循环

for (MyJLabel label : rollHumanLabels) {
if(!label.isSelected()){
//do something
}
}

关于java - 如何从数组列表中获取未通过 mouseclicklistener 选择的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34245901/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com