当达到一些特定的坐标时,如何从一个对象(我的情况下用作标签的图像)中删除keylistener?

时间:2016-01-12 10:09:08

标签: java swing animation keylistener

当达到一些特定的坐标时,如何从一个对象(我的情况下用作标签的图像)中删除keylistener?

2 个答案:

答案 0 :(得分:0)

我不确定你想做什么,但这可能对你有所帮助。下次请将您的代码添加到问题中。

defaultdict

答案 1 :(得分:0)

我猜这是你的前一个问题Trying to move a rectangle with the help of arrow keys in Core Java using JFrames的延续。

在您移动标签的KeyAdapter中,在确认标签符合预期后,您可以简单地说:

l.removeKeyListener(this)

请注意,您必须将标签标记为final JLabel才能生效。

如果上述操作变得复杂,请尝试创建一个扩展KeyAdapter的小助手类,并将代码放入其中。然后,该类可以将您想要的标签作为构造函数参数,以便您可以随时访问它。

private static class MyKeyListener extends KeyAdapter {
    JLabel l;
    public MyKeyListener(JLabel label) {
        this.l = label;
    }
    public void keyPressed(KeyEvent k) {
        // --- Do some stuff here
        // --- Realize that you are done (I.E. Label is in position)
        l.removeKeyListener(this)
    }
}

然后做

l.addKeyListener(new MyKeyListener(l));

在你的构造函数中。