I have been trying to move the focus to the next logical text field on my window when the user presses the ALT key.
I put the following code in the keyReleased event:
if event.keyCode == 18:
event.source.parent.getComponent('tfRptDt').requestFocusInWindow()
This will transfer the focus to the desired text field. However, the first character I type in the text field does not appear, but the second one does.
I have tried using “Invoke Later” under Advanced Settings on the event handler. I have even tried a double “Invoke Later” by using “Invoke Later” under Advanced Settings on the event handler AND using system.util.invokeLater() by using the following code:
if event.keyCode == 18:
def focus():
event.source.parent.getComponent('tfRptDt').requestFocusInWindow()
system.util.invokeLater(focus)
I get the same behavior.
I also tried:
if event.keyCode == 18:
nc = event.source.parent.getComponent('tfRptDt')
nc.requestFocusInWindow()
s=nc.text
nc.text = ' '
nc.text = s
Just to see if changing the text in the text field would make a difference. The first character I type in the text field still disappears.
Any ideas?
Have you tried using the tab key without any requestFocusInWnindow()
? The tab key will swap fields left to right then top to bottom, but I believe you can customize the tab order by grouping components and get a different tab order that might work for you.
Try:
if event.keyCode == 18:
target = event.source.parent.getComponent('tfRptDt')
target.requestFocusInWindow()
for listener in target.keyListeners:
listener.keyReleased(event)
3 Likes
Well, trying to use the default tab order wasn’t going to work, that’s why I ended up going this route. I didn’t know grouping would affect the default tab order, but it still wouldn’t work for me, because at least one move I need to make is up and to the right. Also, if I start grouping components now, a ton of existing scripting is going to need to change…way more than I want to deal with.
Paul - I copied your code in exactly and I am still getting the same behavior.
The issue stems from my use of the ALT key. I switched the key to CTRL+A and I don’t have the issue. My user seems to be satisfied with that, so I am going to leave it. I’m just going to make a note to avoid “special” keys.
1 Like
It was a guess - I figured the first component was ‘consuming’ the key event, so re-emitting it might work to get the second component to use it.