作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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/
我有一个 JLabel[],其中包含 jlabel。我在该数组中存储了 5 个元素,并使用 for 循环为所有这些标签分配了一个 mouseClickListener,如下所示: JLabel rol
我是一名优秀的程序员,十分优秀!