SplashWindow1.java
package jiang.splash;
import javax.swing.*;
import java.awt.*;
/**
* <p>Description: </p>
* SplashWindow1类从Swing的JWindow派生。
* JWindow是一个容器,它没有其他窗口所具有的各种窗口元素,如标题条、窗口管理按钮,甚至连突出显示的边框也没有。
* 因此,JWindow对于制作欢迎屏幕来说是非常合适的。下面的代码假定图形文件在当前目录。
* 图形通过ImageIcon装入内存,然后它就被放到了JWindow的中心。
* 接着,窗口被pack(),这使得Swing把窗口调整到适当的大小,最后窗口被移到了屏幕的中心。
* 如果我们运行下面的程序,可以发现虽然欢迎画面确实出现在屏幕中央,但遗憾的是,它却不会关闭!
* 要关闭欢迎画面,我们需要加入更多的代码(见SplashWindow2.java)。
* <p>Copyright: Copyright (c) 2005</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
class SplashWindow1 extends JWindow {
public SplashWindow1(String filename, Frame f) {
super(f);
JLabel l = new JLabel(new ImageIcon(filename));
getContentPane().add(l, BorderLayout.CENTER);
pack();
Dimension screenSize =
Toolkit.getDefaultToolkit().getScreenSize();
Dimension labelSize = l.getPreferredSize();
setLocation(screenSize.width / 2 - (labelSize.width / 2),
screenSize.height / 2 - (labelSize.height / 2));
setVisible(true);
screenSize = null;
labelSize = null;
}
public static void main(String[] args) {
String fn = "images/mysplash.jpg";
Frame fm = new Frame();
SplashWindow1 Login = new SplashWindow1(fn, fm);
}
}
SplashWindow2.java
package jiang.splash;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
*
* <p>Description: </p>
*
* 和原先的SplashWindow1类相比,这个SplashWindow2类唯一的区别在于多出了一个安装到
* JWindow上的匿名MouseListener。经过这个改动之后,用户可以点击欢迎屏幕关闭它。
* <br>
* 现在我们有了一个很不错的欢迎屏幕,它可以通过点击的方法关闭,但它不会自己消失。
* 接下来我们要加入代码,使得欢迎屏幕在显示一定的时间之后自动消失。这里我们要考虑到运用线程。
* (见SplashWindow3.java)
* <p>Copyright: Copyright (c) 2005</p>
*
* <p>Comp