On Tue, 20 May 2025 21:56:28 GMT, Phil Race <p...@openjdk.org> wrote:
>> src/java.desktop/share/classes/java/awt/GridLayout.java line 50: >> >>> 48: * >>> 49: * EventQueue.invokeAndWait(() -> { >>> 50: * Frame frame = new Frame("GridLayout"); >> >> I would like to bring this to the discussion not necessarily suggesting any >> changes. I noticed that the example uses a "frame", while the description >> above refers to a "window" it might be worth unification. Also, regarding >> invokeAndWait: it’s not strictly necessary here since this is AWT but it >> does not break anything. However, I wonder if it’s worth discussing the use >> of invokeAndWait vs invokeLater. In tests, we usually prefer invokeAndWait >> because we need to wait for the action to complete, but in applications >> invokeLater should work fine. > > A Frame (the java class) creates a window (the desktop concept). I would not > want to promote the java type Frame to mean the concept. > Regarding invokeAndWait vs invokeLater, either is fine in this case and main > has nothing else to do whilst waiting and is the safest default. > I pondered whether to do either in this simple case, but we do generally > these days recommend this pattern even for AWT as Swing classes may be used > to implement AWT .. and if I did not I guarantee someone would have said I > should use it ! Whether or not it matters in this case. I'm in favour of using `invokeLater` (or `invokeAndWait`) even for AWT components. AWT doesn't explicitly declares its threading model. It's safer to create UI on EDT either way—it'll work for both AWT and Swing. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/25278#discussion_r2100689626