Thank you for reporting the issue! I’ve created https://bugs.openjdk.org/browse/JDK-8351867
-andy From: openjfx-dev <openjfx-dev-r...@openjdk.org> on behalf of Cormac Redmond <credm...@certak.com> Date: Tuesday, March 11, 2025 at 18:36 To: openjfx-dev@openjdk.org <openjfx-dev@openjdk.org> Subject: Re: Probably bug: UI changes made while minimized, not reflected upon restore/maximize That meant to say: the act of simply maximising the window ***doesn't*** seem to trigger a redraw. On Wed, 12 Mar 2025 at 00:19, Cormac Redmond <credm...@certak.com<mailto:credm...@certak.com>> wrote: Hi all, A user reported this on reddit: https://www.reddit.com/r/JavaFX/comments/1j8ibpf/platformrunlater_not_updating_the_content_when/ I do feel this is a bug so I'm raising it here. Windows 11, JFX 23.0.2. A quick summary is: if you change a Label while your app is minimized, for example, the change does not get reflected when restored/maximised, unless _something else_ triggers a redraw, such as a window resize, or a hover over a button, etc. The act of simply maximising the window does seem to trigger a redraw. I think it should. Here are two fairly self-explanatory Java classes to demonstrate the problem (adapted from the reddit post). Steps: - Run MinimizeBugApp, observe label - Run Client, hit enter and observe label change as expected - Minimize app, and hit enter on Client one or more times (all triggering label changes) - Restore app, note Label incorrectly still *displays* the same value as before the minimize, despite update(s) - Re-size window to force a redraw, observe correct label value appears public class MinimizeBugApp extends Application { public void start(Stage stage) { Label label = new Label("This should be modified when the signal is received"); StackPane stackPane = new StackPane(); stackPane.getChildren().add(label); Scene scene = new Scene(stackPane, 500, 500); stage.setScene(scene); stage.show(); new Thread(() -> { this.startServer(label); }).start(); } void startServer(final Label label) { try (ServerSocket serverSocket = new ServerSocket(1590)) { while (true) { System.out.println("Waiting for connection..."); serverSocket.accept(); Platform.runLater(() -> { System.out.println("Setting signal is received..."); label.setText("The signal is received " + new Date()); // This will print the correct text, always -- but the texted isn't what is reflected if // it's minimized and then maximized System.out.println("Label text should be: " + label.getText()); }); } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { launch(); } } // Simple test to trigger something in a JavaFX app via a socket public class Client { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (true) { try { System.out.print("Hit enter to create connection"); scanner.nextLine(); new Socket("localhost", 1590); System.out.println("Created connection"); } catch (IOException e) { e.printStackTrace(); } } } } Any thoughts? Is this by design for some reason, or a bug? Kind Regards, Cormac Redmond Software Engineer, Certak Ltd. e: credm...@certak.com<mailto:credm...@certak.com> | m: +353 (0) 86 268 2152 | w: www.certak.com<http://www.certak.com>