對NetBeans,只是注意到,在文件>>項目屬性>>應用對話框中有一個名爲閃屏的文本字段,允許您指定圖像的路徑,你想顯示當你的程序正在啓動。NetBeans的Splash Screen功能如何工作?
我想定製我的啓動畫面的工作方式(添加進度條等),並想從頭開始編碼,但不知道從哪裏開始。基於Java/Swing的啓動畫面的最佳實踐是什麼?
感謝您的任何和所有的投入!
對NetBeans,只是注意到,在文件>>項目屬性>>應用對話框中有一個名爲閃屏的文本字段,允許您指定圖像的路徑,你想顯示當你的程序正在啓動。NetBeans的Splash Screen功能如何工作?
我想定製我的啓動畫面的工作方式(添加進度條等),並想從頭開始編碼,但不知道從哪裏開始。基於Java/Swing的啓動畫面的最佳實踐是什麼?
感謝您的任何和所有的投入!
有幾種方法可以做到這一點。
要做一個簡單的啓動畫面(一個圖像),你可以在你的java應用程序的命令行中指定它。
java -splash:<file name> <class name>
但是,如果你想有一個進度條,你將不得不做一些稍微複雜些,並自己編寫一些代碼。這是通過以下方式完成的。
這應該幾乎立即顯示飛濺,然後在應用程序完全加載後隱藏。
要查看一些啓動畫面代碼,請使用look here。鏈接中的實現僅顯示如何使用-splash命令實現您可以實現的功能,但它會爲您提供一個很好的開始,同時也包含您請求的進度欄。
我不知道怎麼的NetBeans這樣做,但閃屏是由JRE支持,因爲版本6.見http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/splashscreen/
閃屏僅僅是一個java.awt.Window中或未修飾的javax.swing的實例。 JFrame中。 要創建窗口只是說new Window(null)
,然後設置大小和位置(使用無線工具包,你可以計算出在屏幕中心),然後說window.setVisible(true)
由於這是你自己的窗口,你可以做你想做的:設置佈局,圖像,添加過程條至南部等
您還可以使用的JFrame:新的JFrame()setUndecorated(真)`
我希望這可以幫助你,它是如何創建自己的一個小例子。使用虛擬進度條的簡單啓動畫面:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class SplashScreen extends JWindow
{
private static JProgressBar progressBar = new JProgressBar();
private static SplashScreen execute;
private static int count;
private static Timer timer1;
public SplashScreen()
{
Container container = getContentPane();
container.setLayout(null);
JPanel panel = new JPanel();
panel.setBorder(new javax.swing.border.EtchedBorder());
panel.setBackground(new Color(255,255,255));
panel.setBounds(10,10,348,150);
panel.setLayout(null);
container.add(panel);
JLabel label = new JLabel("Hello World!");
label.setFont(new Font("Verdana",Font.BOLD,14));
label.setBounds(85,25,280,30);
panel.add(label);
progressBar.setMaximum(50);
progressBar.setBounds(55, 180, 250, 15);
container.add(progressBar);
loadProgressBar();
setSize(370,215);
setLocationRelativeTo(null);
setVisible(true);
}
public void loadProgressBar()
{
ActionListener al = new ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
count++;
progressBar.setValue(count);
if (count == 50){
timer1.stop();
execute.setVisible(false);
//load the rest of your application
}
}};
timer1 = new Timer(50, al);
timer1.start();
}
public static void main (String args[]){
execute = new SplashScreen();
}
}
乾杯!
如果你的應用是建立使用NetBeans平臺,然後在這裏是一個關於閃屏定製教程:http://wiki.netbeans.org/Splash_Screen_Beginner_Tutorial
該教程似乎不是基於NetBeans平臺的...... – Puce 2011-02-12 17:24:50
也可以考慮建立你的NetBeans平臺上的應用程序(一個基於Swing的RCP)。其中許多優點之一:它帶有可自定義的啓動屏幕和進度條。
樣品進度條: http://platform.netbeans.org/tutorials/nbm-paintapp.html#wrappingUp
端口Swing應用程序到NetBeans平臺: http://platform.netbeans.org/tutorials/60/nbm-porting-basic.html
更多鏈接:
我認爲這個問題是關於NB平臺的應用程序......現在我想知道這是否是實際情況。 – Mchl 2011-02-12 13:55:41
有一個相當於Splash屏幕的樣例Javafx。然而,這個初始屏幕基本上是一個java swing小程序,它從javafx調用以顯示給用戶,並使用進度條和加載內容的標題來模擬或多或少的eclipse和netbeans啓動畫面。 This是鏈接。
您必須能夠獲取代碼並分離出用java swing編寫的啓動畫面代碼並將其用於自己。
這是一個自定義Java Swings初始屏幕。並因此集中使用傳統的啓動畫面
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension labelSize = l.getPreferredSize();
setLocation(screenSize.width/2 - (labelSize.width/2),
screenSize.height/2 - (labelSize.height/2));
項目屬性 - >應用程序 - >啓動畫面允許您將圖像添加到應用程序。此屬性在名爲SplashScreen-Image:
的MANIFEST.MF
中設置了一個值,例如, SplashScreen-Image: META-INF/GlassFish316x159.jpg
該屬性將自動使圖像顯示爲啓動畫面。它在NetBeans內部不起作用,並且必須在IDE之外運行。
有一個教程Splash Screen Beginner Tutorial詳細說明如何使用它的更多細節。本教程是針對NetBeans 6.8完成的,但是可以在本文發佈時的最新版本7.2.1上運行。
如何運行不同類的啓動畫面? – 2012-07-09 17:04:35