MousePressed获取错误的源JPanel

时间:2018-07-08 13:53:47

标签: mouseevent jlabel

我正在编写一个简单的Movegame,而MouseListener却有一些麻烦。

这是游戏视图

This is the View of the game

单个面板是在数组中定义的,每个面板都有一个鼠标侦听器

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

0 个答案:

没有答案