⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gsplashwindow.java

📁 用Swing实现的CHM制作工具
💻 JAVA
字号:
package g2w.app.gchm.lib;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JWindow;

/**
 * GSplashWindow is a window to show a splash.
 * 
 * @author GreatGhoul
 */
public class GSplashWindow extends JWindow {
	
	/** 当前状态信息 */
	JLabel status = null;
	
	/** 背景图像 */
	private Image bgImage = null;
	
	/**
	 * 通过路径构造启动画面
	 * 
	 * @param imgPath 背景图像路径
	 */
	public GSplashWindow(String imgPath) {
		this.bgImage = new ImageIcon(imgPath).getImage();
		initComponents();
	}
	
	/**
	 * 通过图像对象构造启动画面
	 * 
	 * @param bgImage 背景图像对象
	 */
	public GSplashWindow(Image bgImage) {
		this.bgImage = bgImage;
		initComponents();
	}
	
	private void initComponents() {
		// 获取图片尺寸
		int imgWidth = bgImage.getWidth(this);
		int imgHeight = bgImage.getHeight(this);
		
		// 设置窗口大小
		setSize(imgWidth, imgHeight);
		
		// 设置窗口背景
		JPanel background = new JPanel() {
			protected void paintChildren(Graphics g) {
				g.drawImage(bgImage, 0, 0, this);
				super.paintChildren(g);
			}
		};
		background.setOpaque(true);
		background.setLayout(new BorderLayout());
		setContentPane(background);
		
		// 设置窗口位置 
		Toolkit toolkit = Toolkit.getDefaultToolkit();
		Dimension scmSize = toolkit.getScreenSize();
		setLocation(scmSize.width / 2 - imgWidth / 2, 
				scmSize.height / 2 - imgHeight / 2);
		
		// 加入状态条
		status = new JLabel("状态条..........", JLabel.CENTER);
		status.setForeground(Color.WHITE);
		status.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
		getContentPane().add(status, "South");
	}
	
	public void start() {
		setVisible(true);
		toFront();
	}
	
	/**
	 * 设置状态信息
	 * 
	 * @param statusText 状态信息
	 */
	public void setStatus(String statusText) {
		status.setText(statusText);
	}
	
	public void stop() {
		setVisible(false);
		dispose();
	}
	
	public static void main(String[] args) {
		GSplashWindow splash = new GSplashWindow("splash.png");
		splash.start();
		splash.setStatus("正在加载显卡驱动......");
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -