I have an editfield and the user can manipulate the pointer with arrow keys to insert or delete text at every character. My only problem is that I get [icode]StringIndexOutOfBoundsException[/icode]s and I don’t know how I can fix them.
Where I take a key and insert it in a StringBuilder object called input:
@Override
public void key(int keycode) {
if (isLocked()) {
return;
}
Keyboard.poll();
boolean shift = Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT) || InputSystem.getSystem().CAPS_LOCK;
String key = getKey(keycode, shift);
boolean pointerShift = keycode == Keyboard.KEY_LEFT || keycode == Keyboard.KEY_RIGHT;
if (!active) {
return;
}
if (keycode == Keyboard.KEY_BACK) {
input.deleteCharAt(pointer - 1);
pointer--;
}
else if(keycode == Keyboard.KEY_DELETE){
input.deleteCharAt(pointer);
}
else {
if (pointerShift) {
if (keycode == Keyboard.KEY_LEFT) {
pointer = Math.max(0, pointer - 1);
} else {
pointer = Math.min(input.length(), pointer + 1);
}
} else {
input.insert(pointer, key);
pointer++;
}
}
}
Any thoughts?
CopyableCougar4