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

歡迎訪問 生活随笔!

生活随笔

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

java

java swing进度条_Java Swing创建自定义闪屏:在闪屏上添加Swing进度条控件(转)

發布時間:2024/7/5 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java swing进度条_Java Swing创建自定义闪屏:在闪屏上添加Swing进度条控件(转) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文將講解如何做一個類似MyEclipse啟動畫面的閃屏,為Java Swing應用程序增添魅力。

首先看一下效果圖吧,

原理很簡單,就是創建一個Dialog,Dialog有一個進度條和一個Label用來分別顯示進度和進度信息,而Dialog的寬度和高度正是閃屏圖片的寬度和高度。然后將閃屏圖片貼到Dialog中作為整個窗體的背景,Dialog顯示時覆蓋閃屏所處的區域。由于Dialog顯示時閃屏并沒有消失,且Dialog的X、Y及寬高都與閃屏圖片一致,因此實際切換時,非常流暢,用戶感覺不到有異常,就像從閃屏上“長”了兩個Java Swing控件出來一樣,非常自然。

看一下代碼調用:

Java代碼

/*

*?To?change?this?template,?choose?Tools?|?Templates

*?and?open?the?template?in?the?editor.

*/

package?cn.ysh.studio.gui.window;

import?javax.swing.JFrame;

import?javax.swing.UIManager;

/**

*

*?@author?楊勝寒

*/

public?class?SplashProcess?{

public?static?void?main(String?args[])?{

try?{

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

}?catch?(Exception?e)?{

}

//初始化閃屏Dialog時指定閃屏圖片

final?BackgroundDialog?splashWindow?=?new?BackgroundDialog("/cn/ysh/studio/gui/resources/splash.jpg");

//啟動一個線程來加載數據

new?Thread()?{

@Override

public?void?run()?{

try?{

for?(int?i?=?0;?i?

splashWindow.updateProcess("正在進行第"?+?i?+?"次緩存數據加載.?.?.",?i?*?9);

Thread.sleep(300);

}

}?catch?(InterruptedException?ex)?{

//異常不做處理

}

JFrame?window?=?new?MainWindow();

splashWindow.updateProcess("正在啟動主窗體.?.?.",?100);

SwingUtils.moveToScreenCenter(window);

splashWindow.setVisible(false);

//數據加載完成,顯示主窗體

window.setVisible(true);

//釋放資源

splashWindow.dispose();

}

}.start();

//顯示閃屏Dialog

splashWindow.setVisible(true);

}

}

上述代碼分四部分, 一、設置Java Swing外觀風格; 二、創建一個閃屏Dialog; 三、啟動一個加載數據的線程; 四、顯示閃屏Dialog

下面看看閃屏Dialog BackgroundDialog的代碼

Java代碼

/*

*?To?change?this?template,?choose?Tools?|?Templates

*?and?open?the?template?in?the?editor.

*/

package?cn.ysh.studio.gui.window;

import?javax.swing.GroupLayout;

import?javax.swing.ImageIcon;

import?javax.swing.JDialog;

import?javax.swing.JFrame;

import?javax.swing.JLabel;

import?javax.swing.JPanel;

import?javax.swing.JProgressBar;

import?javax.swing.LayoutStyle;

/**

*

*?@author?楊勝寒

*/

public?class?BackgroundDialog?extends?JDialog?{

private?ImageIcon?background;

private?JProgressBar?progressBar;

private?JLabel?progressInfo;

public?BackgroundDialog(String?splashPath)?{

super(new?JFrame(),?true);

//鼠標形狀為等待,告知用戶程序已經在很努力的加載了,此時不可操作

setCursor(new?java.awt.Cursor(java.awt.Cursor.WAIT_CURSOR));

//背景圖片

background?=?new?ImageIcon(BackgroundDialog.class.getResource(splashPath));

JLabel?label?=?new?JLabel(background);//?把背景圖片顯示在一個標簽里面

//把標簽的大小位置設置為圖片剛好填充整個面板

label.setBounds(0,?0,?background.getIconWidth(),?background.getIconHeight());

//把內容窗格轉化為JPanel,否則不能用方法setOpaque()來使內容窗格透明

((JPanel)?getContentPane()).setOpaque(false);

//初始化窗體布局

initUI();

//取消窗體默認裝飾

this.setUndecorated(true);

//把背景圖片添加到分層窗格的最底層作為背景

getLayeredPane().add(label,?new?Integer(Integer.MIN_VALUE));

setSize(background.getIconWidth(),?background.getIconHeight());

//移至屏幕中央,覆蓋閃屏區域

SwingUtils.moveToScreenCenter(this);

}

/**

*?初始化窗體UI,可以在這個方法中創建復雜的UI布局

*/

private?void?initUI()?{

progressBar?=?new?JProgressBar();

progressInfo?=?new?JLabel();

progressInfo.setText("?");

progressInfo.setForeground(new?java.awt.Color(204,?0,?204));

GroupLayout?layout?=?new?GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(progressBar,?GroupLayout.Alignment.TRAILING,?GroupLayout.DEFAULT_SIZE,?410,?Short.MAX_VALUE).addComponent(progressInfo,?GroupLayout.Alignment.TRAILING,?GroupLayout.DEFAULT_SIZE,?410,?Short.MAX_VALUE));

layout.setVerticalGroup(

layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(GroupLayout.Alignment.TRAILING,?layout.createSequentialGroup().addContainerGap(265,?Short.MAX_VALUE).addComponent(progressInfo,?GroupLayout.PREFERRED_SIZE,?15,?GroupLayout.PREFERRED_SIZE).addPreferredGap(LayoutStyle.ComponentPlacement.RELATED).addComponent(progressBar,?GroupLayout.PREFERRED_SIZE,?GroupLayout.DEFAULT_SIZE,?GroupLayout.PREFERRED_SIZE)));

}

public?void?updateProcess(String?info,?int?value)?{

progressInfo.setText(info);

progressBar.setValue(value);

}

}

注釋寫的很清楚,不再贅述,且BackgroundDialog支持更復雜和更有創意的界面設計,比如動畫等特效,在initUI方法中實現即可。

總結

以上是生活随笔為你收集整理的java swing进度条_Java Swing创建自定义闪屏:在闪屏上添加Swing进度条控件(转)的全部內容,希望文章能夠幫你解決所遇到的問題。

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