< prev index next >

test/javax/swing/JComponent/6683775/bug6683775.java

Print this page

        

*** 29,85 **** java.desktop/sun.awt @run main bug6683775 */ import com.sun.awt.AWTUtilities; - import sun.awt.SunToolkit; import javax.swing.*; import java.awt.*; import java.awt.image.BufferedImage; public class bug6683775 { public static void main(String[] args) throws Exception { GraphicsConfiguration gc = getGC(); if (!AWTUtilities.isTranslucencySupported( AWTUtilities.Translucency.PERPIXEL_TRANSLUCENT) || 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); - } }); ! toolkit.realSync(); //robot.getPixelColor() didn't work right for some reason ! BufferedImage capture = robot.createScreenCapture(new Rectangle(100, 100)); int redRGB = Color.RED.getRGB(); ! if (redRGB != capture.getRGB(10, 10)) { throw new RuntimeException("Transparent frame is not transparent!"); } } private static GraphicsConfiguration getGC() { --- 29,85 ---- java.desktop/sun.awt @run main bug6683775 */ import com.sun.awt.AWTUtilities; 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( AWTUtilities.Translucency.PERPIXEL_TRANSLUCENT) || gc == null) { return; } Robot robot = new Robot(); final JFrame testFrame = new JFrame(gc); ! 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); }); ! robot.waitForIdle(); ! Thread.sleep(1500); //robot.getPixelColor() didn't work right for some reason ! BufferedImage capture = ! robot.createScreenCapture(new Rectangle(LOC, LOC, SIZE, SIZE)); int redRGB = Color.RED.getRGB(); ! if (redRGB != capture.getRGB(SIZE/2, SIZE/2)) { throw new RuntimeException("Transparent frame is not transparent!"); } } private static GraphicsConfiguration getGC() {
< prev index next >