Prøv at lege lidt med dette eksempel:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
import java.awt.image.BufferedImage;
/**
* A demonstration of JFrame/JWindow transparency.
* Creates a draggable, transparent window.
*<p>
* Note: This demo assumes that the background image is static,
* which would not be true in the general case.
*
* @author R. Kevin Cole <cole@NoSpam.cfl.rr.com>
* 03/01/03
*/
//public class TransparentWindow extends JFrame
public class TransparentWindow extends JWindow
{
Dimension preferredSize = new Dimension(320,200);
public Dimension getMinimumSize() { return this.preferredSize; }
public Dimension getPreferredSize() { return this.preferredSize; }
protected int XDiff = 0;
protected int YDiff = 0;
protected static int xpos = 0;
protected static int ypos = 0;
protected static Robot robot;
Image myImage;
public TransparentWindow() throws Exception
{
super();
((JPanel) getContentPane()).setOpaque(false);
setSize( getPreferredSize() );
setBackground( Color.black );
JPanel panel = (JPanel) getContentPane();
panel.setBorder( new LineBorder( Color.white ) );
// turn off double-buffering to reduce flicker in this demo
// -not a good idea in the general case-
RepaintManager.currentManager(null).setDoubleBufferingEnabled(false);
addMouseMotionListener(new MyMouseMotionListener());
robot = new Robot();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Rectangle rec = new Rectangle();
rec.setSize( screenSize );
myImage = robot.createScreenCapture(rec);
}
public void paint( Graphics g )
{
super.paint(g);
if( myImage != null )
{
Dimension size = getSize();
g.drawImage( myImage, 1, 1, size.width-2, size.height-2
, xpos,ypos, xpos+size.width, ypos+size.height
, null);
}
}
public class MyMouseMotionListener extends MouseMotionAdapter
{
public void mousePressed(MouseEvent evt)
{
XDiff = evt.getX() - xpos;
YDiff = evt.getY() - ypos;
if( XDiff < 0 ) XDiff = -XDiff;
if( YDiff < 0 ) YDiff = -YDiff;
}
public void mouseDragged(MouseEvent e)
{
try
{
TransparentWindow.this.setLocation( xpos + (e.getX() - XDiff),
ypos + (e.getY() - YDiff) );
xpos = xpos + (e.getX() - XDiff);
ypos = ypos + (e.getY() - YDiff);
// force a repaint.
TransparentWindow.this.invalidate();
TransparentWindow.this.validate();
TransparentWindow.this.repaint();
} catch (Exception ex) { ex.printStackTrace(); }
}
}
public static void main(String[] argv) throws Exception
{
TransparentWindow frame = new TransparentWindow();
//Center the window
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = frame.getSize();
xpos = (screenSize.width - frameSize.width)/2;
ypos = (screenSize.height - frameSize.height)/2;
frame.setLocation(xpos,ypos);
frame.setVisible(true);
}
}
Link:
http://groups.google.dk/groups?q=java+transparent+jframe&hl=da&lr=&ie=UTF-8&oe=UTF-8&selm=qo506v4bqd5csd1qg92i3bkdb6v325cth9%404ax.com&rnum=5