mouseevent - MousePressed 获取错误的源 JPanel
问题描述
我正在编写一个简单的移动游戏,但我在使用 MouseListener 时遇到了一些问题。
这是游戏的视图
单个面板定义在一个数组中,每个面板都有一个鼠标监听器
for (int i=0; i<9; i++) {
labels[i] = new JLabel();
labels[i].setPreferredSize(new Dimension(70, 70));
if (numbers[i] != null) {
labels[i].addMouseListener(mausListener);
labels[i].setBorder(border);
labels[i].setText(Integer.toString(numbers[i]));
labels[i].setFont(font);
labels[i].setBackground(Color.LIGHT_GRAY);
labels[i].setHorizontalAlignment(SwingConstants.CENTER);
labels[i].setOpaque(true);
} else {
labels[i].setText("null");
labels[i].setVisible(false);
}
this.add(labels[i]);
}
numbers 是一个填充了未排序数字的 Array:
[8, 2, 3, 1, 5, 4, 7, null, 6]
这是我的鼠标监听器:
public void mousePressed(MouseEvent e) {
clicked = (JLabel) e.getSource();
if (clicked.getText() != "null") {
System.out.println(clicked.getText());
logik.move(Integer.parseInt(clicked.getText()));
System.out.println(Arrays.toString(logik.getNummern()));
}
}
move 函数检查单击的标签是否是可能的标签,并将其切换为空标签。这个函数是我们教授给的,所以不会出错。现在的问题是,当我单击后单击空标签时,例如“6”标签,mousePressed 函数将“6”标签作为源对象,尽管我按下了空标签。
我希望有人可以帮助我解决这个问题。
谢谢大家 :D
解决方案
推荐阅读
- javascript - chrome window.innerWidth 值与开发者控制台值不同
- unit-testing - 尝试使用 Argument Captor 在 Kotlin 中捕获参数时出错
- mastercard - 万事达卡托管结账集成安全
- c++ - 如何在 Qt C++ 程序中管理多个 SQLite 数据库?
- python - 如何有效地计算大量数据的距离矩阵
- javascript - 在 React 中出现错误“找不到模块的声明文件......”
- asp.net-core - 如何在 .NET Core Razor 页面中获取登录用户列表
- javascript - 如何在数组中找到给定字符串的“字符串编号”?
- javascript - How do you retrieve selected options BEFORE the user have submitted the form?
- python - Python list.pop 特定元素,例如 List.pop(0)(0)