日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java闪屏怎么制作,Java Swing创建自定义闪屏:在闪屏下画进度条(一)

發布時間:2024/9/19 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java闪屏怎么制作,Java Swing创建自定义闪屏:在闪屏下画进度条(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java Swing創建自定義閃屏:在閃屏上畫進度條(一)

由于本人十分熱愛Java Swing,所以平時閑暇之余總是喜歡極盡所能去搜藏一些自認為比較“酷”的Swing代碼來研究揣摩。昨天的兩篇文章,介紹了Java Swing透明和不規則窗體的創建和原理,是一年半以前我還在學校的時候搞出來的。在學校的日子因為輕松、自由、專注,所以總是讓人倍加懷念。這一懷念不打緊,讓我翻出了以前寫的N多“爛”代碼,好在時至今日我還能勉強看懂,花了一個上午的時間整理了一下,現在跟大家分享一個分別模仿NetBeans和MyEclipse啟動畫面的Java Swing閃屏制作技巧。

用過NetBeans和MyEclipse的童鞋,對它們的啟動畫面(也叫閃屏,下文所述如不加以說明,都是指閃屏)肯定都非常熟悉了,它們在啟動的時候,向啟動畫面輸出當前初始化的進度信息:包括文字信息和進度條信息。當然他們也有細微的不同之處,仔細觀察就能發現,NetBeans的進度條似乎太不“專業”,隨便在閃屏上畫個矩形,然后對部分區域以紅色填充以代表進度;相反,MyEclipse則要好多了,“閃屏”上出現的是一個標準的進度條控件。二者優劣無法評斷,也不是本文的主題所在,這里本人將以兩篇文章的篇幅分別介紹如何實現NetBeans式的閃屏和MyEclipse式的閃屏。

本文將從原理到代碼,詳細介紹如何實現NetBeans的閃屏。

原理:Swing程序啟動后,虛擬機會根據指定的圖片生成一個SplashScreen,在Swing窗體顯示之前出現在屏幕的中央,以告知用戶,程序已經在很努力的加載了。在程序中,我們可以通過SplashScreen.getSplashScreen()得到這個閃屏對象,然后,通過該對象我們又可以得到閃屏的圖形對象(Graphics2D對象)。得到這個對象以后,相信接下來不用多說,很多人都知道該如何借助這個Graphics2D對象,在閃屏上畫出來各種各樣的“東西”而不僅僅限于提示字符和模擬的進度條了。

看一下效果圖

最上面的那一行字符串,是加載進度提示信息,最下面的紅色區域是模擬出來的進度條。當然啦,他們的位置、形狀、顏色都是可以定制的。

好了,貼上代碼吧:

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package cn.ysh.studio.gui.window;

import java.awt.AlphaComposite;

import java.awt.Color;

import java.awt.Graphics2D;

import java.awt.Rectangle;

import java.awt.SplashScreen;

import javax.swing.UIManager;

/**

*

* @author 楊勝寒

*/

public class Splash {

//在這兒你能獲得通過-splash:設置給程序的splash screen的實例

private final SplashScreen splash = SplashScreen.getSplashScreen();

private Rectangle splashBounds;

private Graphics2D splashGraphics;

/**

* 初始化splash

*/

protected void initSplash() {

if (splash != null) {

//下面給splash screen畫一個邊框

splashBounds = splash.getBounds();

//在這兒初始化圖形對象,該圖形對象取自splash

splashGraphics = (Graphics2D) splash.createGraphics();

if (splashGraphics != null) {

splashGraphics.setColor(Color.BLUE);

splashGraphics.drawRect(0, 0, splashBounds.width - 1, splashBounds.height - 1);

}

}

}

/**

* 更新splash,這個方法

*/

protected void updateSplash(String status, int progress) {

if (splash == null || splashGraphics == null) {

return;

}

//重畫splash上面的進度并通知splash更新界面

drawSplash(splashGraphics, status, progress);

splash.update();

}

/**

* 這個方法畫一個進度條,不再詳述。

*/

protected void drawSplash(Graphics2D splashGraphics, String status, int progress) {

int barWidth = splashBounds.width;//進度條長度

splashGraphics.setComposite(AlphaComposite.Clear);

splashGraphics.fillRect(1, 10, splashBounds.width - 2, 20);//閃屏邊框

splashGraphics.setPaintMode();//模型

splashGraphics.setColor(Color.ORANGE);//字符串顏色

splashGraphics.drawString(status, 10, 20);//畫字符串

splashGraphics.setColor(Color.red);//進 度條填充顏色

int width = progress * barWidth / 100;//進度條當前值

splashGraphics.fillRect(0, splashBounds.height - 20, width, 6);

}

/**

* 這兒是加載程序的過程

*/

protected void loadApplication() {

//初始化splash

initSplash();

//模擬的加載進度提示信息

final String[] stages = {"正在啟動", "正在讀取數據", "正在加載相關文檔", "啟動完成"};

int stage = 0;

//在下面你初始化程序的過程中調用updateSplash來更新splash

for (int i = 0; i <= 100; i += 1) {

String status = stages[stage];

if (splash != null) {

//更新閃屏圖像

updateSplash(status, i);

}

if (i == 30) {

stage = 1;

} else if (i == 70) {

stage = 2;

} else if (i == 90) {

stage = 3;

}

try {

//故意等待

Thread.sleep(20);

} catch (Exception e) {

//異常不做處理

}

}

try {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

} catch (Exception e) {

}

MainWindow window = new MainWindow();

//在這兒你可以主動關閉splash

if (splash != null) {

splash.close();

}

//真正開始的你的登錄界面或者主窗口

window.setVisible(true);

}

public static void main(String args[]) {

new Splash().loadApplication();

}

}

順便提一下,在Java Swing應用程序中指定閃屏很簡單,只需在jar文件的META-INF文件夾下的MANIFEST.MF文件的

Main-Class: cn.ysh.studio.gui.window.Splash上面加這么一行SplashScreen-Image: META-INF/splash.jpg就可以了,系統啟動時將以此圖片生成閃屏。該圖片必須位于jar包中,路徑為包名+文件名。

原創文章,轉載請注明出處:http://yshjava.iteye.com/blog/1326450

總結

以上是生活随笔為你收集整理的java闪屏怎么制作,Java Swing创建自定义闪屏:在闪屏下画进度条(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品一区二区在线观看 | 五月婷婷久| avtt亚洲| 国产好片无限资源 | www.欧美日韩 | 日本在线不卡一区二区三区 | 欧美黄色网络 | 香蕉人人精品 | 狠狠做深爱婷婷久久综合一区 | 亚洲va国产天堂va久久 en | 国产网红女主播精品视频 | 成片免费观看视频大全 | 久人人| 国产又爽又黄无码无遮挡在线观看 | 国产精品自拍网站 | 韩国黄色片网站 | 国产精品亚洲二区 | 免费黄色小视频在线观看 | 国产激情一区二区三区四区 | 国产三级视频在线播放 | 午夜理伦三级做爰电影 | 国产91在线免费观看 | 亚洲天堂五月天 | 国产欧美在线 | 性色av一区二区三区红粉影视 | 最新黄色在线 | 亚洲精华国产精华精华液网站 | 欧美熟妇交换久久久久久分类 | 三级无遮挡 | 国产一区二区亚洲 | 超碰999 | 国产精品色婷婷99久久精品 | 日本老熟妇毛茸茸 | 国产老熟妇精品观看 | 国产网站免费在线观看 | 色桃av| 亚洲狼人天堂 | 亚洲综合免费观看高清完整版 | 一区二区三区在线视频免费观看 | 精品中文字幕视频 | 亚洲天堂午夜 | 成人免费视频网址 | 女优视频在线观看 | 国产精品久久久爽爽爽麻豆色哟哟 | 嫩草99| 浪潮av色 | 催眠美妇肉奴系统 | 国产大片一区二区 | 国产日韩欧美日韩大片 | 国产精品夜夜嗨 | 性――交――性――乱a | 日韩在线激情视频 | 激情四射网 | 特级西西人体444www高清大胆 | 四川黄色一级片 | 欧美激情xxx | 国产精品精品视频 | 丁香婷婷六月天 | 国产精品人妻一区二区三区 | av毛片在线| 欧美日韩一区二区在线播放 | 亚洲第一黄| 91嫩草欧美久久久九九九 | 久久亚洲美女 | 激情中文网 | 成人性生交大片免费看96 | 久久香视频 | 精品国产欧美一区二区三区成人 | 日韩久久一区 | 久久久区| 小柔的淫辱日记(h | 国产在线麻豆精品观看 | av中文字幕一区二区三区 | a黄色片 | 高h文在线 | 黑人一级女人全片 | 一级片网址 | 国产美女精品久久久 | 欧美午夜免费 | 蜜桃视频中文字幕 | 亚洲av无码国产精品久久不卡 | 精品久久一区二区 | 日日草草| 国产精品VideoSex性欧美 | 捆绑japanhdxxxxvideos | 黄色日韩视频 | 五月婷婷久 | 秋霞一级视频 | 中文字幕在线观看一区二区 | 观看av在线 | 久久亚洲天堂 | 欧美午夜在线 | 国产精品久久久久国产a级 国产一区二区在线播放 | 99热com| h片免费在线观看 | 亲子乱一区二区三区 | 99久久久成人国产精品 | 欧美一区二区三区成人久久片 | 国产成人精品一区二区三区无码熬 |