On Mon, 6 Dec 2021 23:01:05 GMT, Alisen Chung <ach...@openjdk.org> wrote:
>>> In the TestBadBreak example, how do you know it's properly painting onto >>> the final BufferedImage? When I try the same it doesn't seem to be painting >>> anything on the BufferedImage, so there's no colors to compare. >> >> How do you paint the frame into BufferedImage? >> You may need to set the size of the frame explicitly. >> >> There are many tests which paint components to the image. You can also take >> a look at test/jdk/javax/swing/text/FlowView/6318524/bug6318524.java and >> test/jdk/javax/swing/text/ParagraphView/6364882/bug6364882.java. Each of >> these two provides an option to save the BufferedImage to a file. > >> How do you paint the frame into BufferedImage? > You may need to set the size of the frame explicitly. > > I'm overriding the paintComponent method of JPanel to instead directly paint > onto a BufferedImage that I passed in, similar to the TestBadBreak example. > > I pushed what I have so far, but it seems like the BufferedImage is blank The image is blank because this method is never called. `TestBadBreak` relies on the frame being shown, it adds the component into the frame and shows the frame to capture what's painted. You don't add the `panel` into the frame, therefore it's never painted. Try to paint into the image directly, after you configured the panel, that is after `panel.add(scrollBar);`, call: Graphics2D graphics2D = image.createGraphics(); panel.paint(graphics2D); graphics2D.dispose(); Then you can analyse the colour of pixels on the image just like you do now with robot. ------------- PR: https://git.openjdk.java.net/jdk/pull/6374