案例说明
展示两种不同的程序启动界面
案例过程
第一种
代码如下
package com.student.frame;
/**
* 系统启动类
* @authorAdministrator
*/
//导入包
import javax.swing.*;
import java.awt.*;
import java.util.Timer;
import java.util.TimerTask;
//启动主类继承窗体父类并实现线程接口
public class Index extends JWindow implements Runnable {
private staticfinal long serialVersionUID = 1L;
// 创建进度条属性
privateJProgressBar jpb;
// 定义一张图片标签
private JLabeljl;
// 构造方法
public Index() {
init();
}
// 初始化方法
public voidinit() {
// 实例化图片标签
jl = newJLabel(new ImageIcon("image/0.png"));
// 创建进度条
jpb = newJProgressBar();
// 设置进度条属性
jpb.setStringPainted(true);//显示当前进度值信息
jpb.setIndeterminate(false);//确定进度条执行完成后不来回滚动
jpb.setBorderPainted(false);//设置进度条边框不显示
jpb.setBackground(Color.pink);//设置进度条的背景色
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));//设置光标
// 设置布局添加组件
this.add(jl,BorderLayout.NORTH);
this.add(jpb,BorderLayout.SOUTH);
// 设置窗体属性
this.setSize(384,292);//设置大小
this.setLocationRelativeTo(null);//设置剧中显示
//下面两句也可以设置居中显示窗体
//Dimensionscreen = getToolkit().getScreenSize(); // 得到屏幕尺寸
//setLocation((screen.width- getSize().width) / 2, (screen.height - getSize().height) / 2); // 设置窗口位置
this.pack();// 窗口适应组件尺寸
this.setVisible(true);
}
// 设置线程方法
public void run(){
int[]progressValue = { 0, 1, 5, 8, 14, 17, 26, 35, 38, 43, 49, 56, 65, 71, 75, 78,86, 94, 98, 99, 100 };
for (int i =0; i < progressValue.length; i++) {
try {
// 休眠1秒,再执行
Thread.sleep(1000);
} catch(InterruptedException e) {
// TODOAuto-generated catch block
e.printStackTrace();
}
jpb.setValue(progressValue[i]);//取得数组中的进度值
}
while (true) {
try {
Thread.sleep(1000);
} catch(InterruptedException e) {
// TODOAuto-generated catch block
e.printStackTrace();
}
// 当进度完成后,执行相应的操作,如切换到其他的窗口,同时关闭进度条窗口等
newUserLogin();
// 关闭进度条窗口
this.dispose();
break;
}
}
// 启动类主方法
public staticvoid main(String[] args) {
// new 一个类对象
Index i = newIndex();
// 定义线程
Thread t = newThread(i);
t.start();
}
}
第二种
import javax.swing.*;
import java.awt.*;
import java.net.*;
//程序启动界面
public class JWindowDemo extends JWindow implementsRunnable {
ThreadsplashThread; // 进度条更新线程
JProgressBarprogress; // 进度条
publicJWindowDemo() {
Containercontainer = getContentPane(); // 得到容器
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));// 设置光标
URL url =getClass().getResource("login.jpg"); // 图片的位置
if (url !=null) {
container.add(new JLabel(new ImageIcon(url)),BorderLayout.CENTER); // 增加图片
}
progress = newJProgressBar(1, 100); // 实例化进度条
progress.setStringPainted(true);// 描绘文字
progress.setString("加载程序中,请稍候......");// 设置显示文字
progress.setBackground(Color.white);// 设置背景色
container.add(progress,BorderLayout.SOUTH); // 增加进度条到容器上
Dimensionscreen = getToolkit().getScreenSize(); // 得到屏幕尺寸
pack(); // 窗口适应组件尺寸
setLocation((screen.width- getSize().width) / 2, (screen.height - getSize().height) / 2); // 设置窗口位置
}
public voidstart() {
this.toFront();// 窗口前端显示
splashThread =new Thread(this); // 实例化线程
splashThread.start();// 开始运行线程
}
public void run(){
setVisible(true);// 显示窗口
try {
for (int i =0; i < 100; i++) {
Thread.sleep(100);// 线程休眠
progress.setValue(progress.getValue()+ 1); // 设置进度条值
}
} catch(Exception ex) {
ex.printStackTrace();
}
dispose(); // 释放窗口
//new MainFrame();运行主程序
}
public staticvoid main(String[] args) {
JWindowDemosplash = new JWindowDemo();
splash.start();// 运行启动界面
}
}
案列总结
根据自己的喜好,放置不同的启动图片即可!
公众号 java一号 更多java实战项目资料、技术干活。更重要的是小猿愿成为你编程路上的一个朋友!
文章首发地址: www.javayihao.top
首发公众号: java一号