diff --git a/test/jdk/java/awt/event/MouseWheelEvent/WheelModifier/WheelModifier.java b/test/jdk/java/awt/event/MouseWheelEvent/WheelModifier/WheelModifier.java index 8f16b03747e..bfb6b76d273 100644 --- a/test/jdk/java/awt/event/MouseWheelEvent/WheelModifier/WheelModifier.java +++ b/test/jdk/java/awt/event/MouseWheelEvent/WheelModifier/WheelModifier.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,14 +26,23 @@ @key headful @bug 8041470 @summary JButtons stay pressed after they have lost focus if you use the mouse wheel - @author Anton Nashatyrev */ -import javax.swing.*; -import java.awt.*; -import java.awt.event.*; +import java.awt.AWTEvent; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Point; +import java.awt.Robot; +import java.awt.Toolkit; +import java.awt.event.AWTEventListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.util.concurrent.CountDownLatch; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.SwingUtilities; + public class WheelModifier { JFrame f; @@ -44,6 +53,9 @@ public class WheelModifier { CountDownLatch releaseSema = new CountDownLatch(1); volatile CountDownLatch wheelSema; + private volatile Point sLoc; + private volatile Dimension bSize; + void createGui() { f = new JFrame("frame"); fb = new JButton("frame_button"); @@ -98,10 +110,13 @@ void run() throws Exception { r.waitForIdle(); System.out.println("# Started"); - Point sLoc = fb.getLocationOnScreen(); - Dimension bSize = fb.getSize(); + SwingUtilities.invokeAndWait(() -> { + sLoc = fb.getLocationOnScreen(); + bSize = fb.getSize(); + }); + r.mouseMove(sLoc.x + bSize.width / 2, sLoc.y + bSize.height / 2); - r.mousePress(MouseEvent.BUTTON1_MASK); + r.mousePress(MouseEvent.BUTTON1_DOWN_MASK); pressSema.await(); System.out.println("# Pressed"); @@ -119,7 +134,7 @@ void run() throws Exception { wheelSema.await(); System.out.println("# Wheeled 2"); - r.mouseRelease(MouseEvent.BUTTON1_MASK); + r.mouseRelease(MouseEvent.BUTTON1_DOWN_MASK); releaseSema.await(); System.out.println("# Released!"); }