Trouble with Transparent Backgrounds

Hey, I’m currently attempting to hack-together a widget for my desktop so I can get away from thinking about games and make something quick and fun. I’ve had good success so-far but now I’ve hit a small snag right before I’m about to finish most of the back-end code and move on to the fun parts.

I’m attempting to make the background of my canvas completely transparent so that only the images that I display will be shown and the rest will show whatever’s behind the widget on the desktop. I’ve tried a few things such as setBackground(new Color(0, 0, 0, 255)), setBackground(new Color(0, 0, 0, 0)), setBackground(Color.TRANSPARENT); and my latest attempt was to create a transparent image the size of the screen in photoshop and then display it but that didn’t work either. If anyone has any ideas on how to get this to work they’ll help a lot. ^.^

Why would you think that making the image transparent would show the desktop?
You can use java.awt.Robot and createScreenCapture(), but your window would block it.
I don’t know if this is possible with java, this seems too low level.

Someone said to try it in the comments section of one of the various pages I googled so I did. I’ll check out awt.Robot now, I think that it might just work if it works the way I think…

Edit:
Well, I managed to get it kinda-sorta-almost working with this:


//Render the picture to the background and hope that this works...
        try
        {
            Robot robot = new Robot();
            Point point = canvas.getParent().getLocationOnScreen();
            System.out.println(point);
            Rectangle captureSize = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
            BufferedImage bufferedImage = robot.createScreenCapture(captureSize);
            g.drawImage(bufferedImage, point.x, point.y, point.x+720, point.y+492, point.x, point.y, point.x+720, point.y+492, null);
        } 
        catch (Exception e) 
        {
            e.printStackTrace();
        }

But it can’t take pictures from behind the canvas. Looks like I’m back to square 1 again…

Yeah, exactly, that’s what I meant…what are you trying to do with this application? Perhaps there’s a workaround?

Are you looking for a sort-of ‘custom-shaped’ window?

I think he’s looking for see-through window, seeing the desktop through the window.

Got it with the first google search:

http://docs.oracle.com/javase/tutorial/uiswing/misc/trans_shaped_windows.html

(requires Java 7)

Apparently my google skills are terrible…didn’t even know you could do that

Thanks for the link but I’ve checked out that page already and it didn’t seem to be able to do what I’m trying to do.

Here’s what I’m trying to do/what I’ve done…

I’ve disabled the toolbar and the border around the frame and implemented some code so that you can drag the frame around with the canvas instead of using the toolbar. The next step that I need to do is to be able to display an image that isn’t see-through on a see-through canvas, an example of what I’m trying to do would be like this picture http://i.imgur.com/GGS92dx.jpg . Basically it’ll just show up as an image on the desktop wherever you place it.

So, as far as I know, making the whole canvas transparent won’t work because I need to be able to display a non-transparent image onto the transparent canvas.