JDK-8075609 : java.lang.IllegalArgumentException: aContainer is not a focus cycle root of aComponent
  • Type: Bug
  • Component: client-libs
  • Sub-Component: java.awt
  • Affected Version: 7u80,8u40,9
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2015-03-20
  • Updated: 2022-01-27
  • Resolved: 2015-05-12
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
7u91Fixed 8u60Fixed 9 b68Fixed
Related Reports
Duplicate :  
Duplicate :  
Duplicate :  
Relates :  
Relates :  
Relates :  
Submitter reports that this issue has been introduced when the tab traversal behaviour changed for buttons in a radio group. Originally the buttons in the group were 
traversable using TABS (with SPACE to activate the button) but now the cursor keys are used to cycle through the buttons. This was implemented in BasicRadioButtonUI class. 

The changes also introduced a getFocusTransferBaseComponent() method which is trying to get the focus ancestor using the following: 
Window container = SwingUtilities.getWindowAncestor(activeBtn); 
This is failing when radio buttons are in one of our overview editors (which are Dockables where the focusCycleRoot is set to true and the focusCycleRoot is therefore not the Window).
URL: http://hg.openjdk.java.net/jdk9/jdk9/jdk/rev/45d0cfe4d888 User: lana Date: 2015-06-10 21:24:34 +0000

URL: http://hg.openjdk.java.net/jdk9/client/jdk/rev/45d0cfe4d888 User: asaha Date: 2015-05-12 21:28:52 +0000

SQE OK to defer it from PSU15_02

Justification: 7u Defer request - We recognize that this issue has to be address, but it is too late in the 15_02 cycle for us to resolve this. We plan to fix this for 15_03/8u60 (if not before).

Comment from the JDK-8075943 javax.swing.plaf.basic.BasicRadioButtonUI.ButtonGroupInfo.getFocusTransferBaseComponent(boolean) should probably use the focusCycleRoot for the JRadioButton as 'container', but instead uses the Window that holds the component. The result is the same if the Window is the FocusCycleRoot, but that is not always the case. Window container = SwingUtilities.getWindowAncestor(activeBtn); should probably be replaced by Container container = activeBtn.getFocusCycleRootAncestor();

Should be back ported to 8u60 and 7u