用java的jwindow实现程序运行出的splash画面

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;
  }
}

时间: 2025-01-01 20:14:15

用java的jwindow实现程序运行出的splash画面的相关文章

java入门(1) 程序运行机制及运行过程

首先我们来看一下java程序在底层是怎么工作的: JAVA有两种核心机制: Java虚拟机(Java Virtual Machine): 1.java虚拟机可以理解成一个以字节码为机器指令的CPU. 2.对于不同的平台,有不同的虚拟机. 3.java虚拟机机制屏蔽了底层运行平台的差别,实现了"一次编译,随处运行". 垃圾收集机制(Garbage collection) 1.不再使用的内存空间应回收--垃圾收集 2.Java语言相对于C/C++而言消除了程序员回收无用内存空间的责任:提供

java图形界面+数据库~程序运行有误

问题描述 importjava.net.*;importjava.sql.*;importjava.awt.*;importjava.awt.event.*;importjava.io.*;importjava.util.*;importjavax.swing.*;classUpdateextendsJFrameimplementsActionListener{JFramef;Containercp;JPaneljp1,jp2,jp3,jp4,jp,jpanelWest;JButtonjbt1,

求解答- java语言想要运算器程序可以运行出正负数及小数点运算

问题描述 java语言想要运算器程序可以运行出正负数及小数点运算 public class Calculator { private CalcEngine engine; private UserGUI gui; public Calculator() { engine=new CalcEngine(); gui=new UserGUI(engine); } public void show() { gui.setVisible(true); } public static void main(

求救-程序是对的,但是在学生用的版本jdk运行不出,怎样能运行出结果呢?

问题描述 程序是对的,但是在学生用的版本jdk运行不出,怎样能运行出结果呢? import java.awt.*;import java.awt.event.*;import javax.swing.*; @SuppressWarnings(""serial"")public class CalculatorTest extends JFrame implements ActionListener {double N = 0;double n = 0;double

寻帮助-想要程序可以运行出正负数及小数点运算

问题描述 想要程序可以运行出正负数及小数点运算 //主函数 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; public class UserGUI implements ActionListener { private CalcEngine calc; private JFrame frame; private JTextField display; p

android:程序build的时候无错,运行出异常

问题描述 android:程序build的时候无错,运行出异常 Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'. com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/annotation/ArrayRes.class

求大神解答一下-想要程序可以运行出正负数及小数点运算

问题描述 想要程序可以运行出正负数及小数点运算 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; public class UserGUI implements ActionListener { private CalcEngine calc; private JFrame frame; private JTextField display; private

win8运行应用程序弹出“应用程序无法启动(0x00000XX) ”如何解决

  win8运行应用程序弹出"应用程序无法启动(0x00000XX) "如何解决         具体步骤: 1.下载DirectX Repair3.3,并将其解压出来; 2.打开"DirectX Repair",点击[检测并修复]右侧的小三角,勾选"同时更新c++"; 3.点击[检测并修复],修复工具开始自动运行; 4.修复完成后点击退出,并且重启算计即可解决应用程序出错的问题.

如何关闭Win7系统老是弹出阻止关闭程序运行窗口

  有些用户在问道说Win7系统中如何才能设置关闭阻止程序运行提示的教程,64位win7旗舰版下载系统中我们运行一些使用程序的时候就会出现弹出提示的运行窗口,说这个运行的程序可能是病毒或者是存在一定的风险,总是需要我们进行选择才能够继续上我那个,而且可能经常都会弹出这个窗口,让人非常的不爽,出现这样的情况如何才能让窗口不弹出我们来看看具体的解决方法吧! 1.首先我们可以打开开始菜单,看到里面的控制面板选项选择点击弹出新的窗口,然后在选择用户与家庭安全这个选项点击打开. 2.在弹出的新窗口中我们选