This week's book giveaway is in the Mac OS forum.
We're giving away four copies of a choice of "Take Control of Upgrading to Yosemite" or "Take Control of Automating Your Mac" and have Joe Kissell on-line!
See this thread for details.
The moose likes Swing / AWT / SWT and the fly likes Focusing Radio Button Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


JavaRanch » Java Forums » Java » Swing / AWT / SWT
Bookmark "Focusing Radio Button" Watch "Focusing Radio Button" New topic
Author

Focusing Radio Button

Anuradha Narayanan
Greenhorn

Joined: Jul 28, 2005
Posts: 1
Hi,

I've the following scenario:

TextField1
TextField2
Radio buttons1 Radio buttons2 Radio buttons3
Button1

I've FocusListeners set on the text fields. The event I'm interested is focusLost. While lossing focus from textfield, based on some condition, I'm enabling or disabling all radio buttons. Some condition is that, if there is some text in both the text fields enable radio buttons, otherwise disable them.

I'm entering some text in TextField1, tabing out, entering some text in TextField2, If I tab out now, I want the radio buttons to be enabled and the focus should be on the radio button.
But the actual result I'm getting is radio buttons are enabled and the focus goes to the next component - Button1!
I don't know to fix it.

I simplified the problem to understand. The actual code looks like

private class MyFocusAdapter extends FocusAdapter
{
public final void focusLost(FocusEvent e)
{
doSomething();
enableDisableRadioButtons();
doSomeOtherThing();
}
}
private void enableDisableRadioButtons()
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
radioB1.setEnabled(shouldEnableRadioButtons());
radioB2.setEnabled(shouldEnableRadioButtons());
}
}


The problem is focus path is not working fine.

The reason I guess is when we tab out from second text field after entering some text there, it should enable the radio buttons, then it should focus the selected radio buton. I guess this is not happening in the same order. At the time of tab out from second text field, as the radio buttons are disabled, the focus goes to the next component - the button. Then the radio buttons gets enabled. I'm not sure. The problem comes only when the radio buttons are disabled. If the radio buttons are already enabled, the the focus path is fine.

Someone suggested to use document listener instead of focus listener.

Previously we had the enable/diable functionality in the keyReleased event of the textfields. So it was working fine earlier.
Later the requirement is changed to do the same in focus lost event. The reason is there will be large number of call to enable/disable that is for each key release event. The same thing will happen if I use document listener! Any idea please!

Sorry for long message!

Thanks
Anu
Gregg Bolinger
GenRocket Founder
Ranch Hand

Joined: Jul 11, 2001
Posts: 15299
    
    6

In your focusLost method, check to see which textfield you are in. If you are in the second textfield, requestFocus on the desired component (JRadioButton in your case)


GenRocket - Experts at Building Test Data
 
GeeCON Prague 2014
 
subject: Focusing Radio Button