On Mon, 16 Feb 2026 10:43:50 GMT, Prasanta Sadhukhan <[email protected]>
wrote:
> The FocusTraversalPolicy of a JOptionPane (JDialog) "reports" via
> `FocusTraversalPolicy.getInitialComponent`/`FocusTraversalPolicy.getFirstComponnent`
> that the focusable component passed to a JOptionPane, should get the initial
> focus. This however doesn't always happen, as the text field's FocusListener
> methods focusGained and focusLost are not invoked.
> Fix is made to honor the first focusable component of custom component (if
> present) and set the focus accordingly..
> This will cause the component's focusGained/focusLost method to get called.
> CI testing is ok..
I believe it is honoring that too. It will check and requestFocus to
`selectInitialValue(op)` initialValue and then fallback to
`initialFocusComponent` if it is not set..
Object paneInitVal = op.getInitialValue();
// must be from pane because BasicOptionPane
// sets intialFocusComponent to the default button
if (paneInitVal != null) {
if (paneInitVal instanceof JComponent) {
// if JOptionPane initialValue is a JComponent
((JComponent) paneInitVal).requestFocus();
} else if (initialFocusComponent != null) {
// else custom option button gets
// the focus if available
initialFocusComponent.requestFocus();
-------------
PR Comment: https://git.openjdk.org/jdk/pull/29738#issuecomment-3911539414