import javax.swing.*; import java.awt.*; /* JWindow 是一个能够在用户桌面的任何地方显示的容器。 所以能够使用它构成程序刚运行时的splash画面。 */ public class ESplash extends JWindow implements Runnable { private Thread thread = null; private Image logo = null; private Color bg_color = new Color(255, 255, 255); private Toolkit toolkit =getToolkit(); private int image_width; private int image_height;
public ESplash() { logo = new ECreateIcon().getSplashImage(); loadImage(logo, 0); image_width = logo.getWidth(this); image_height = logo.getHeight(this); setBackground(bg_color); setCursor(new Cursor(3)); setSize(image_width + 10, image_height + 10); //设置JWindow的显示位置 int Xpos = (toolkit.getScreenSize().width - getSize().width) / 2; int Ypos = (toolkit.getScreenSize().height - getSize().height) / 2; setBounds(Xpos, Ypos, getSize().width, getSize().height); setVisible(true); } /* 通过使用MediaTracker加载图像,确保图像被正确的加载。 图像被加载后,将进行绘图。 */ private void loadImage(Image image, int ID) { if(image != null) { MediaTracker tracker = new MediaTracker(this); tracker.addImage(image, ID); try { tracker.waitForID(ID); } catch(InterruptedException _ex) { } } }
/* 在JWindow部件上绘制图像。 */ public void paint(Graphics g) { g.drawImage(logo, 5, 5, image_width, image_height, this); //设置字体的色彩 g.setColor(new Color(102, 102, 150)); g.drawString("正在初始化系统......", 7, getSize().height - 72); //设置矩形框的背景色彩。 g.setColor(new Color(255, 255, 255)); //绘制矩形框 g.fillRect(5, getSize().height - 70, 317, 7); g.drawRect(5, getSize().height - 70, 317, 7); //重新设置将要填涂在矩形框中的颜色 g.setColor(new Color(102, 102, 150)); for(int n = 0; n < 317; n += 5) try { //线程休眠50毫秒 Thread.sleep(50L); //填涂矩形框 g.fillRect(5, getSize().height - 70, n, 5); } catch(Exception _ex) { } }
public void run() { //设置鼠标为等待状态 setCursor(new Cursor(3)); repaint(); }
public void stop() { //结束线程 thread = null; logo = null; }
//更新图形区,防止绘图时产生闪烁现象。
public void update(Graphics g) { paint(g); } }
/////////////////////////////////////////////////////
import java.awt.*; import java.awt.image.*; import java.awt.event.*; import javax.swing.*;
public class ECreateIcon{ private static Image splashimage; public ECreateIcon(){ splashimage = getImageFromResource("resources/images/Esplash.gif"); } //获得图像 private Image getImageFromResource(String image_path) { return Toolkit.getDefaultToolkit().getImage(image_path); }
public ImageIcon createImageIcon(String filename) { String path = "/resources/images/" + filename; return new ImageIcon(getClass().getResource(path)); } public Image getSplashImage() { return splashimage; } } |