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.