RFR: 8356594: JSplitPane loses divider location when reopened via JOptionPane.createDialog() [v4]
Sergey Bylokhov
serb at openjdk.org
Sat May 24 03:36:01 UTC 2025
On Fri, 23 May 2025 08:05:38 GMT, Prasanta Sadhukhan <psadhukhan at openjdk.org> wrote:
>> The issue is when a JSplitPane is embedded inside a lazily-initialized panel, and this panel is displayed using a dialog created via JOptionPane.createDialog(), the divider location is not preserved when reopening the dialog.
>> This is because when we added support for ComponentOrientation for JSplitPane, even though the left and right compoent is drawn the divider location is not set and was set to initial value and not to the value set by user.
>> Fixed by setting the divider location before rendering the left and right components..
>
> Prasanta Sadhukhan has updated the pull request incrementally with one additional commit since the last revision:
>
> Set orientation only if changed...add headful in test
src/java.desktop/share/classes/javax/swing/JSplitPane.java line 373:
> 371: public void setComponentOrientation(ComponentOrientation orientation) {
> 372: if (!orientation.equals(this.getComponentOrientation())) {
> 373: super.setComponentOrientation(orientation);
I would like to bring up for discussion whether we should move this line outside the if block. From what I can tell, it was always executed before the initial fix, so this change might affect the original behavior.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25294#discussion_r2105687915
More information about the client-libs-dev
mailing list