几乎所有时髦的应用都有一个欢迎屏幕。欢迎屏幕既是宣传产品的方法之一,而且在长时间的应用启动过程中,欢迎屏幕还用来表示应用正在准备过程中。
下面是一个最简单的欢迎屏幕实现:
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; } } | SplashWindow1类从Swing的JWindow派生。JWindow是一个容器,它没有其他窗口所具有的各种窗口元素,如标题条、窗口管理按钮,甚至连突出显示的边框也没有。因此,JWindow对于制作欢迎屏幕来说是非常合适的。上面的代码假定图形文件在当前目录。图形通过ImageIcon装入内存,然后它就被放到了JWindow的中心。接着,窗口被pack(),这使得Swing把窗口调整到适当的大小,最后窗口被移到了屏幕的中心。
如果我们运行上面的程序,可以发现虽然欢迎画面确实出现在屏幕中央,但遗憾的,它却不会关闭!要关闭欢迎画面,我们需要加入更多的代码:
class SplashWindow2 extends JWindow { public SplashWindow2(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)); addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { setVisible(false); dispose(); } }); setVisible(true); } } | 和原先的SplashWindow1类相比,这个SplashWindow2类唯一的区别在于多出了一个安装到JWindow上的匿名MouseListener。经过这个改动之后,用户可以点击欢迎屏幕关闭它。 |