EDIT: ignore all posts up until this post:
http://hub.jmonkeyengine.org/groups/general-2/forum/topic/input-is-delayed-by-1-frame-jme3-r7361/?topic_page=2&num=15#post-126497
(because, I wrongly thought that the input is delayed by 1 frame all the time, but instead it only does this when used setFrameRate and you press the key while Display.sync() is sleeping )
Heylo :)
I was trying to track my issue and it seems that this is the cause (vague enough? ok self-slap xD)
I put a simple code, to test this, press Esc key once when you see the message:
"before update begins, press a key now ie. Esc"
and what you notice is, that, although you pressed the key before update() [not simpleUpdate()!] began, the effect of this happens only the next call to update. And this works the same for mouse inputs.
This affects me in my case, when I click on an object and then it moved from that position(in the very next frame) such that now the click is in mid air(not on the object, in this frame, because it moved that much), and thus it's not detected by the input handler(my onAction) that I clicked on the object (although I did so in that frame)
EDIT: in this screenie, I pressed Esc only once (that is press&release) when the first message appeared then I waited until it exited (that is, on the next call to update and after the second msg)

[java]package org.jme3.forum2;
import com.jme3.app.SimpleApplication;
public class Input1FrameLag extends SimpleApplication {
public static void main(String[] args) {
Input1FrameLag i = new Input1FrameLag();
i.start();
}
@Override
public void simpleInitApp() {
//
}
@Override
public void update() {
try {
// works for mouse inputs also
System.out.println("before update begins, press a key now ie. Esc");
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
super.update();
}
}
[/java]