知识大全 Java很神奇 用swing制作欢迎屏幕

Posted

篇首语:勤勉是幸运的右手,世俭是幸运的左手。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java很神奇 用swing制作欢迎屏幕相关的知识,希望对你有一定的参考价值。

Java很神奇 用swing制作欢迎屏幕  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  几乎所有时髦的应用都有一个欢迎屏幕 欢迎屏幕既是宣传产品的方法之一 而且在长时间的应用启动过程中 欢迎屏幕还用来表示应用正在准备过程中 现在教你怎么用java中的swing技术制作一个时髦的欢迎屏幕

  下面是一个最简单的欢迎屏幕实现

  Java代码

  class SplashWindow extends JWindow

  

  public SplashWindow (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/ (labelSize width/ )

  screenSize height/ (labelSize height/ ));

  setVisible(true);

  screenSize = null;

  labelSize = null;

  

  

  SplashWindow 类从Swing的JWindow派生 JWindow是一个容器 它没有其他窗口所具有的各种窗口元素 如标题条 窗口管理按钮 甚至连突出显示的边框也没有 因此 JWindow对于制作欢迎屏幕来说是非常合适的 上面的代码假定图形文件在当前目录 图形通过ImageIcon装入内存 然后它就被放到了JWindow的中心 接着 窗口被pack() 这使得Swing把窗口调整到适当的大小 最后窗口被移到了屏幕的中心

  如果我们运行上面的程序 可以发现虽然欢迎画面确实出现在屏幕中央 但遗憾的 它却不会关闭!要关闭欢迎画面 我们需要加入更多的代码 Java代码

  class SplashWindow extends JWindow

  

  public SplashWindow (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/ (labelSize width/ )

  screenSize height/ (labelSize height/ ));

  addMouseListener(new MouseAdapter()

  

  public void mousePressed(MouseEvent e)

  

  setVisible(false);

  dispose();

  

  );

  setVisible(true);

  

  

  和原先的SplashWindow 类相比 这个SplashWindow 类唯一的区别在于多出了一个安装到JWindow上的匿名MouseListener 经过这个改动之后 用户可以点击欢迎屏幕关闭它

  现在我们有了一个很不错的欢迎屏幕 它可以通过点击的方法关闭 但它不会自己消失 接下来我们要加入代码 使得欢迎屏幕在显示一定的时间之后自动消失 这里我们要考虑到运用线程

  Java代码

  class SplashWindow extends JWindow

  

  public SplashWindow (String filename Frame f int waitTime)

  

  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/ (labelSize width/ )

  screenSize height/ (labelSize height/ ));

  addMouseListener(new MouseAdapter()

  

  public void mousePressed(MouseEvent e)

  

  setVisible(false);

  dispose();

  

  );

  final int pause = waitTime;

  final Runnable closerRunner = new Runnable()

  

  public void run()

  

  setVisible(false);

  dispose();

  

  ;

  Runnable waitRunner = new Runnable()

  

  public void run()

  

  try

  

  Thread sleep(pause);

  SwingUtilities invokeAndWait(closerRunner);

  

  catch(Exception e)

  

  e printStackTrace();

  // 能够捕获InvocationTargetException

  // 能够捕获InterruptedException

  

  

  ;

  setVisible(true);

  Thread splashThread = new Thread(waitRunner SplashThread );

  splashThread start();

  

  

  这里的基本思路是利用一个在一定时间内暂停等待的Thread对象 在上面的代码中 线程的暂停时间是 秒 当这个线程唤醒时 它将关闭欢迎屏幕 由于Swing是非线程安全的 除非代码在事件分派线程上执行 否则它就不应该影响任何UI组件的状态 所谓事件分派线程 就是Swing中负责绘图和事件处理的线程

  为了解决这个问题 Swing设计者赋予我们安全地把Runnable对象加入UI事件队列的能力 在本例中 我们用可运行对象closerRunner完成最关键的工作 我们把可运行对象传入SwingUtilities invokeAndWait()静态方法 然后wingUtilities invokeAndWait()进行所有未完成的UI操作 并执行传递给该方法的可运行对象closerRunner的run方法 通过运用一个独立的线程负责欢迎屏幕的关闭操作 应用担负起了显示和关闭欢迎屏幕之间的所有操作

  如果要让欢迎屏幕总是显示且用户不能关闭它 你必须删除那些隐藏欢迎屏幕的代码 如果要让欢迎屏幕只能由用户手工关闭 你可以象使用任何其他JWindow对象一样调用SplashWindow 对象上的setVisible(false)和dispose()方法

cha138/Article/program/Java/hx/201311/26872

相关参考

知识大全 Swing全屏幕模式

Swing全屏幕模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  也许用到的机会很少但JDK还

知识大全 用Java Swing作一个日历控制程序

用JavaSwing作一个日历控制程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  日期是最基

知识大全 用VC.NET制作启动屏幕的新方法

用VC.NET制作启动屏幕的新方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在利用VC+编

知识大全 Java 实践: 用 XQuery 进行屏幕搜集

Java实践:用XQuery进行屏幕搜集  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  上个月J

知识大全 java swing 9.27 课程

  /**  *  Title:swing概观  *  Description:swing初步知识  *  Copyright:eclipse(c)  *  */  一swing的概观    swin

知识大全 java swing标准对话框具体实现

这篇文章介绍了swing标准对话框的具体实现方法有需要的朋友可以参考一下 复制代码代码如下:>>>>>>cha138/Article/program/Java/JSP/201311

知识大全 Java拖放文件到Swing窗口

Java拖放文件到Swing窗口  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  经过测试是没有问

知识大全 利用 Java Swing 实现游戏开发

利用JavaSwing实现游戏开发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Swing初体

知识大全 Java开发中的线程安全选择与Swing

Java开发中的线程安全选择与Swing  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Swin

知识大全 Linux下java的Swing/AWT程序乱码解决

Linux下java的Swing/AWT程序乱码解决  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!