单击文本时,Label上的MouseEvent会中断

时间:2018-03-26 04:10:21

标签: java javafx label mouseevent

所以我试图制作一个15-puzzle的javafx版本,在那里你滑动小方块并尝试将它们整理好。我有一系列标签,我的代码的目标是,当您单击标签时,如果该标签为空,则将其文本与相邻标签交换。所以我有:

void moveTile(MouseEvent event){
    Label clicked = (Label)event.getTarget();
    int position = Arrays.asList(labels).indexOf(clicked);
    if(position > 0 && labels[position-1].getText().equals("")){
        String temp = clicked.getText();
        clicked.setText(labels[position-1].getText());
        labels[position-1].setText(temp);
    }else if(position < 15 && labels[position+1].getText().equals("")){
        String temp = clicked.getText();
        clicked.setText(labels[position+1].getText());
        labels[position+1].setText(temp);
    }else if(position>3 && labels[position-4].getText().equals("")){
        String temp = clicked.getText();
        clicked.setText(labels[position-4].getText());
        labels[position-4].setText(temp);
    }else if(position < 12 && labels[position+4].getText().equals("")){
        String temp = clicked.getText();
        clicked.setText(labels[position+4].getText());
        labels[position+4].setText(temp);
    }
}//

它工作正常,但前提是你没有点击文字。如果直接单击标签的文本部分,则会抛出:javafx.controls@9.0.4/com.sun.javafx.scene.control.LabeledText无法转换为javafx.controls@9.0.4/javafx.scene.control .Label

我认为发生的事情是,当它查找事件目标时,它会获取文本而不是标签本身。 有办法解决这个问题吗?问题指出你必须使用标签,所以我不能只使用按钮。

0 个答案:

没有答案