/*** @(#)TransparentFrame.java v0.1.0 2007-10-21*/packageruislan.rswing.test;importjava.awt.BorderLayout;importjava.awt.Color;importjava.awt.Container;importjava.awt.Dimension;importjava.awt.Toolkit;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.geom.RoundRectangle2D;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;importjavax.swing.JSlider;importjavax.swing.border.LineBorder;importjavax.swing.event.ChangeEvent;importjavax.swing.event.ChangeListener;importcom.sun.jna.examples.WindowUtils;/*** Transparent JFrame use JNA
*
*@authorruislan
*@version0.1.0*/publicclassTransparentFrame {privateJFrame frame;privateJPanel container;privateJSlider slider;privateJPanel titleBar;privateJLabel titleLabel;privateJButton closeButton;publicstaticvoidmain(String[] args) {newTransparentFrame().launch();
}privatevoidlaunch() {
createUI();
launchUI();
}protectedvoidlaunchUI() {
frame.setVisible(true);
}protectedvoidcreateUI() {
System.setProperty("sun.java2d.noddraw","true");
frame=newJFrame();
frame.setSize(200,150);
frame.setAlwaysOnTop(true);
frame.setUndecorated(true);
container=newJPanel();
frame.setContentPane(container);
container.setLayout(newBorderLayout());
container.add(newJLabel("Ubunto vs Vista, I like both."),
BorderLayout.CENTER);
container.setBorder(newLineBorder(Color.BLACK));
titleBar=newJPanel();
titleBar.setLayout(newBorderLayout());
titleLabel=newJLabel("JNA is great!");
titleBar.add(titleLabel, BorderLayout.CENTER);
titleBar.setBorder(newLineBorder(Color.GRAY));
closeButton=newJButton("X");
closeButton.setFocusPainted(false);
closeButton.addActionListener(newActionListener() {
@OverridepublicvoidactionPerformed(ActionEvent e) {
System.exit(0);
}
});
titleBar.add(closeButton, BorderLayout.EAST);
container.add(titleBar, BorderLayout.NORTH);
slider=newJSlider(0,100);
slider.setValue(100);
slider.addChangeListener(newChangeListener() {
@OverridepublicvoidstateChanged(ChangeEvent e) {floatvalue=slider.getValue();
WindowUtils.setWindowAlpha(frame, value*0.01f);
}
});
container.add(slider, BorderLayout.SOUTH);
RoundRectangle2D.Float mask=newRoundRectangle2D.Float(0,0, frame
.getWidth(), frame.getHeight(),20,20);
WindowUtils.setWindowMask(frame, mask);
centerWindow(frame);
}publicstaticvoidcenterWindow(Container window) {
Dimension dim=Toolkit.getDefaultToolkit().getScreenSize();intw=window.getSize().width;inth=window.getSize().height;intx=(dim.width-w)/2;inty=(dim.height-h)/2;
window.setLocation(x, y);
}
}