博客
关于我
java程序启动界面的实现
阅读量:581 次
发布时间:2019-03-11

本文共 3385 字,大约阅读时间需要 11 分钟。

案例说明

       展示两种不同的程序启动界面

案例过程

       第一种

代码如下

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一号

你可能感兴趣的文章
Nginx面试三连问:Nginx如何工作?负载均衡策略有哪些?如何限流?
查看>>
Nginx:NginxConfig可视化配置工具安装
查看>>
ngModelController
查看>>
ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名
查看>>
ngrok内网穿透可以实现资源共享吗?快解析更加简洁
查看>>
NHibernate学习[1]
查看>>
NHibernate异常:No persister for的解决办法
查看>>
NIFI1.21.0_java.net.SocketException:_Too many open files 打开的文件太多_实际操作---大数据之Nifi工作笔记0051
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_更新时如果目标表中不存在记录就改为插入数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0059
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>
NIFI1.21.0最新版本安装_连接phoenix_单机版_Https登录_什么都没改换了最新版本的NIFI可以连接了_气人_实现插入数据到Hbase_实际操作---大数据之Nifi工作笔记0050
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_插入修改删除增量数据实时同步_通过分页解决变更记录过大问题_01----大数据之Nifi工作笔记0053
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
查看>>
NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_生成插入Sql语句_实际操作02---大数据之Nifi工作笔记0041
查看>>