--- old/test/javax/swing/JComponent/6683775/bug6683775.java 2015-07-23 19:30:04.108157260 +0300 +++ new/test/javax/swing/JComponent/6683775/bug6683775.java 2015-07-23 19:30:03.972157257 +0300 @@ -31,13 +31,15 @@ */ import com.sun.awt.AWTUtilities; -import sun.awt.SunToolkit; import javax.swing.*; import java.awt.*; import java.awt.image.BufferedImage; public class bug6683775 { + static final int LOC = 100, + SIZE = 200; + public static void main(String[] args) throws Exception { GraphicsConfiguration gc = getGC(); if (!AWTUtilities.isTranslucencySupported( @@ -45,39 +47,37 @@ || gc == null) { return; } - SunToolkit toolkit = (SunToolkit) Toolkit.getDefaultToolkit(); Robot robot = new Robot(); final JFrame testFrame = new JFrame(gc); - SwingUtilities.invokeLater(new Runnable() { - public void run() { - JFrame backgroundFrame = new JFrame("Background frame"); - backgroundFrame.setUndecorated(true); - JPanel panel = new JPanel(); - panel.setBackground(Color.RED); - backgroundFrame.add(panel); - backgroundFrame.setSize(200, 200); - backgroundFrame.setVisible(true); - - testFrame.setUndecorated(true); - JPanel p = new JPanel(); - p.setOpaque(false); - testFrame.add(p); - AWTUtilities.setWindowOpaque(testFrame, false); - testFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - testFrame.setSize(400, 400); - testFrame.setLocation(0, 0); - testFrame.setVisible(true); - } + SwingUtilities.invokeAndWait(() -> { + JFrame backgroundFrame = new JFrame("Background frame"); + backgroundFrame.setUndecorated(true); + JPanel panel = new JPanel(); + panel.setBackground(Color.RED); + backgroundFrame.add(panel); + backgroundFrame.setBounds(LOC, LOC, SIZE, SIZE); + backgroundFrame.setVisible(true); + + testFrame.setUndecorated(true); + JPanel p = new JPanel(); + p.setOpaque(false); + testFrame.add(p); + AWTUtilities.setWindowOpaque(testFrame, false); + testFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + testFrame.setBounds(LOC, LOC, SIZE, SIZE); + testFrame.setVisible(true); }); - toolkit.realSync(); + robot.waitForIdle(); + Thread.sleep(1500); //robot.getPixelColor() didn't work right for some reason - BufferedImage capture = robot.createScreenCapture(new Rectangle(100, 100)); + BufferedImage capture = + robot.createScreenCapture(new Rectangle(LOC, LOC, SIZE, SIZE)); int redRGB = Color.RED.getRGB(); - if (redRGB != capture.getRGB(10, 10)) { + if (redRGB != capture.getRGB(SIZE/2, SIZE/2)) { throw new RuntimeException("Transparent frame is not transparent!"); } }