国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

應用Mustang里新的啟動畫面功能

2019-11-18 11:55:19
字體:
來源:轉載
供稿:網友

  啟動畫面是現代圖形界面的應用程序里一個標準組成部分。它的主要用途就是告訴用戶:應用程序正在啟動。顯示一個精致的和看起來專業的啟動畫面的應用程序可吸引用戶的注重并且讓用戶知道應用程序正在啟動中。此外,啟動畫面還可提供行情信息。有時候還是由于法律上的原因:展現版權信息,第三方的標志以及其他信息。
  
  使用java基本類和Swing(JFC/Swing)或者AWT來創建為JAVA應用程序創建啟動畫面。然而啟動畫面僅是用來告訴用戶程序正在啟動中,所以啟動畫面從彈出到應用程序啟動完成的這段時間要盡量短。在彈出啟動畫面前,應用程序需要裝載和初始化JAVA虛擬機、AWT通常是SWING以及應用程序所需要的庫文件。直到現在,基于JAVA的啟動畫面的停留時間要比預期的短。
  
  JAVA平臺標準版本6,代號為Mustang,提供了解決:可讓啟動畫面更早地出來,甚至是在虛擬機啟動前。現在,JAVA應用程序啟動器能為一個圖像編碼并且將它顯示在一個簡單的沒有任何裝飾的窗口里(如圖1)
  
 應用Mustang里新的啟動畫面功能

  注重:為了運行本文中的代碼,需要下載與安裝Mustang[https://mustang.dev.java.net/]
  
  用清單文件里的一個選項可讓以JAR壓縮包形式的應用程序顯示一個啟動畫面。其他類型的程序通過命令行選項來做到。你可用桌面快捷方式或者腳本來提供命令行選項給JAVA應用程序啟動器。啟動畫面上可顯示GIF、PNG或者是JPEG的透明、半透明和動畫的圖象。
  
  有兩種途徑來顯示本機啟動畫面:
  
  假如程序是由快捷方式或是命令行啟動的,那么用 -splash參數:JAVA應用程序用來顯示啟動畫面的選項:
  
  java -splash:filename.gif SplashTest
  
  假如程序是以JAR形式打包的,可在清單文件里用SplashScreen-Image選項來顯示啟動畫面。把圖象也打包在JAR里并且在選項里指明圖象路徑。比如,在mainfest.mf文件里使用如下代碼:
  Manifest-Version: 1.0
  Main-Class: SplashTest
  SplashScreen-Image: filename.gif
  
  命令行的形式要優先于清單文件里的設置。
  
  這個特性很輕易使用。多數情況下,你所要做的就是給出圖象和啟動選項。啟動畫面在第一個AWT或是SWING窗口顯示后會自動關閉。
  
  在某些情形下,可能要在啟動畫面上顯示另外一些動態信息。SplashScreen類可能被用來關閉啟動畫面、更換啟動畫面里的圖象、獲取圖象位置或者大小以及繪制啟動畫面。這個類不能用來創建啟動畫面。應該用命令行選項或者是清單文件里的選項來實現啟動畫面。
  
  此外,SplashScreen類不可實例化。僅有此類的一個實例可存在,可通過靜態方法getSplashScreen()來獲得。假如應用程序既不以命令行也不以清單文件選項來創建啟動畫面的話,那么getSplashScreen()方法返回null.
  
  典型情況是,啟動畫面顯示在屏幕上并且在畫面上還顯示些其他東西,比如進度指示。啟動畫面窗口有個alpha通道的覆蓋面,可通過通常的Graphics或Graphics2D接口來訪問這個覆蓋面。
  
  如下代碼示范了如何第一次獲取SplashScreen對象,以及如何通過getGrpahics()方法來獲取圖形句柄。接下來,得到啟動畫面的大小,假如你已經在畫面上繪制了其他內容了,如何來清除圖象。設置AlphaComposite.Clear 復合模式,在整個啟動畫面上繪制矩形。恢復繪制模式以及繪制你想要的內容。最后,調用update()方法來顯示你所繪制的內容。
  
  SplashScreen splash = SplashScreen.getSplashScreen();
  Graphics2D g = (Graphics2D)splash.getGraphics();
  Dimension size = splash.getDimension();
  g.setComposite(AlphaComposite.Clear);
  g.fillRect(0, 0, size.width, size.height);
  g.setPaintMode();
  
  同樣,也許想以一個AWT或SWING窗口來替代啟動畫面:
  
  SplashScreen splash = SplashScreen.getSplashScreen();
  // OBTain the splash-screen bounds.
  Rectangle splashBounds = splash.getBounds();
  
  給你看看新的在與指定splashBounds一樣的位置上手工代碼出來的啟動窗口。原先的啟動窗口自動關閉。
  
  通過調用setImageURL方法來更換啟動畫面上的圖象。假如想在第一個AWT或者SWING窗口顯示前(少數情況下AWT或SWING不被圖形界面應用程序所使用)就關閉啟動畫面,那么可調用SplashScreen.close方法。
  
  下面給出一個程序來舉例說明啟動畫面如何工作:
  
  import java.awt.*;
  import java.awt.event.*;
  public class SplashTest extends Frame implements ActionListener {
  static void renderSplashFrame(Graphics2D g, int frame) {
  final String[] comps = {"foo", "bar", "baz"};
  g.setComposite(AlphaComposite.Clear);
  g.fillRect(130,250,280,40);
  g.setPaintMode();
  g.setColor(Color.BLACK);
  g.drawString("Loading "+comps[(frame5)%3]+"...", 130, 260);
  g.fillRect(130,270,(frame*10)%280,20);
  }
  public SplashTest() {
  super("SplashScreen demo");
  setSize(500, 300);
  setLayout(new BorderLayout());
  Menu m1 = new Menu("File");
  MenuItem mi1 = new MenuItem("Exit");
  m1.add(mi1);
  mi1.addActionListener(this);
  
  MenuBar mb = new MenuBar();
  setMenuBar(mb);
  mb.add(m1);
  final SplashScreen splash = SplashScreen.getSplashScreen();
  if (splash == null) {
  System.out.  return;
  }
  Graphics2D g = (Graphics2D)splash.getGraphics();
  if (g == null) {
  System.out.println("g is null");
  return;
  }
  for(int i=0; i<100; i++) {
  renderSplashFrame(g, i);
  splash.update();
  try {
  Thread.sleep(200);
  }
  catch(InterruptedException e) {
  }
  }
  splash.close();
  setVisible(true);
  toFront();
  }
  public void actionPerformed(ActionEvent ae) {
  System.exit(0);
  }
  public static void main (String args[]) {
  SplashTest test = new SplashTest();
  }
  }
  
  注重:getGraphics 為給啟動畫面上覆蓋用的圖象創建了一個圖形上下文(如同Graphics對象),這樣就可在啟動畫面上進行繪制。不同于直接在主畫面上進行繪制,繪制工作實際上是在主圖象之上的圖象以alpha混合方式進行的。同時也請注重:在覆蓋面圖象上的繪制不必更新啟動畫面窗口上的內容。如過想讓啟動創面窗口立即更新的話,只需要在SpalshScreen上調用update()方法.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 和田市| 曲沃县| 东乡县| 三亚市| 双鸭山市| 缙云县| 长垣县| 金堂县| 阿巴嘎旗| 沾化县| 清丰县| 安义县| 乐安县| 搜索| 三门峡市| 龙井市| 阳高县| 新和县| 军事| 富源县| 山西省| 达孜县| 利津县| 随州市| 赞皇县| 平舆县| 台山市| 惠水县| 洱源县| 新竹县| 东丽区| 叶城县| 荆门市| 扎鲁特旗| 花莲市| 比如县| 朔州市| 霍州市| 农安县| 通河县| 济源市|