当达到一些特定的坐标时,如何从一个对象(我的情况下用作标签的图像)中删除keylistener?
答案 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));
在你的构造函数中。