天天看點

java程式啟動界面的實作

案例說明

       展示兩種不同的程式啟動界面

案例過程

       第一種

java程式啟動界面的實作

代碼如下

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

第二種

java程式啟動界面的實作
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();// 運作啟動界面
   }
}      

案列總結

       根據自己的喜好,放置不同的啟動圖檔即可!