On Wed, 7 Oct 2020 23:54:47 GMT, Sergey Bylokhov <[email protected]> wrote:
>> MetalRootLayout class and methods are private but it is called from
>> MetalRootPaneUI so we cannot delete it
>> but I could not find any ways to invoke MetalRootLayout methods from
>> testcase.
>
> The MetalRootPaneUI installs the MetalRootLayout as a layout manager for the
> current JRootPane. And it should be used
> from the Container.preferredSize()
I tried following testcase snippet
```
JRootPane r = new JRootPane();
JFrame f = new JFrame();
f.getRootPane().setUI(new MetalRootPaneUI());
f.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);
f.getRootPane().getUI().installUI(r);
r.getContentPane().add(new JLabel("foo"));
System.out.println("Preferred Size: " + r.getPreferredSize());
but it uses JRootPane.RootLayout layout manager and not MetalRootLayout so it
calls Rootlayout.preferredLayoutSize and
not MetalRootLayout.preferredlayoutSize
-------------
PR: https://git.openjdk.java.net/jdk/pull/433