我正在编写一个简单的Movegame,而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是一个填充有未排序数字的数组:
[8, 2, 3, 1, 5, 4, 7, null, 6]
这是我的mouseListener:
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()));
}
}
移动功能检查单击的标签是否为可能的标签,并使用null标签进行切换。该功能由我们的教授提供,因此不会有任何错误。 现在的问题是,当我单击(例如)“ 6”标签后单击空标签时,尽管我按下了空标签,但mousePressed函数还是将“ 6”标签作为源对象。
我希望有人能帮助我解决这个问题。
谢谢大家:D