change to raise a ChangeEvent on setValue
add key event, fix setValue method