Sep 30
Use a JWindow to display your splash image, the following example shows how to do add some nice effects to your splash image.
import java.awt.AWTException;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.awt.image.ConvolveOp;
import java.awt.image.Kernel;
import java.util.Arrays;
import javax.imageio.ImageIO;
import javax.swing.JWindow;
import javax.swing.Timer;
public class SplashWindow extends JWindow
{
private BufferedImage splash = null;
public SplashWindow(BufferedImage image)
{
int width = image.getWidth();
int height = image.getHeight();
int extra = 14;
setSize(new Dimension(
width + extra, height + extra));
setLocationRelativeTo(null);
Rectangle windowRect = getBounds();
splash = new BufferedImage(
width + extra, height + extra,
BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = (Graphics2D) splash.getGraphics();
try
{
Robot robot = new Robot(
getGraphicsConfiguration().getDevice());
BufferedImage capture = robot.createScreenCapture(
new Rectangle(windowRect.x, windowRect.y,
windowRect.width + extra,
windowRect.height + extra));
g2.drawImage(capture, null, 0, 0);
}
catch (AWTException ex)
{
ex.printStackTrace();
}
BufferedImage shadow = new BufferedImage(
width + extra, height + extra,
BufferedImage.TYPE_INT_ARGB);
Graphics shadowGraphics = shadow.getGraphics();
shadowGraphics.setColor(
new Color(0.0f, 0.0f, 0.0f, 0.3f));
shadowGraphics.fillRoundRect(
6, 6, width, height, 12, 12);
shadowGraphics.dispose();
float[] data = new float[49];
Arrays.fill(data, 1 / (float) (49));
g2.drawImage(shadow,
new ConvolveOp(new Kernel(7, 7, data)),
0, 0);
g2.drawImage(image, 0, 0, this);
g2.dispose();
}
public void paint(Graphics g)
{
if (splash != null)
{
g.drawImage(splash, 0, 0, null);
}
}
public static void main(String[] args)
throws Exception
{
BufferedImage image = ImageIO.read(
SplashWindow.class.getResourceAsStream(
"objects.png"));
SplashWindow window = new SplashWindow(image);
window.setVisible(true);
Timer timer = new Timer(5000, new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
System.exit(0);
}
});
timer.start();
}
}
Leave a Reply
You must be logged in to post a comment.