2011-02-12 74 views
4

對NetBeans,只是注意到,在文件>>項目屬性>>應用對話框中有一個名爲閃屏的文本字段,允許您指定圖像的路徑,你想顯示當你的程序正在啓動。NetBeans的Splash Screen功能如何工作?

我想定製我的啓動畫面的工作方式(添加進度條等),並想從頭開始編碼,但不知道從哪裏開始。基於Java/Swing的啓動畫面的最佳實踐是什麼?

感謝您的任何和所有的投入!

回答

0

有幾種方法可以做到這一點。

要做一個簡單的啓動畫面(一個圖像),你可以在你的java應用程序的命令行中指定它。

Here is a simple example

java -splash:<file name> <class name> 

但是,如果你想有一個進度條,你將不得不做一些稍微複雜些,並自己編寫一些代碼。這是通過以下方式完成的。

  1. 創建的JWindow(或窗口或未修飾的JFrame)組件與您的閃屏元素
  2. 將其設置爲可見
  3. 做你的Swing GUI的啓動代碼的其餘部分
  4. 設置你的JFrame可見,然後立即將JWindow設置爲可見(false)

這應該幾乎立即顯示飛濺,然後在應用程序完全加載後隱藏。

要查看一些啓動畫面代碼,請使用look here。鏈接中的實現僅顯示如何使用-splash命令實現您可以實現的功能,但它會爲您提供一個很好的開始,同時也包含您請求的進度欄。

0

閃屏僅僅是一個java.awt.Window中或未修飾的javax.swing的實例。 JFrame中。 要創建窗口只是說new Window(null),然後設置大小和位置(使用無線工具包,你可以計算出在屏幕中心),然後說window.setVisible(true)

由於這是你自己的窗口,你可以做你想做的:設置佈局,圖像,添加過程條至南部等

您還可以使用的JFrame:新的JFrame()setUndecorated(真)`

0

我希望這可以幫助你,它是如何創建自己的一個小例子。使用虛擬進度條的簡單啓動畫面:

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

乾杯!

+0

如何運行不同類的啓動畫面? – 2012-07-09 17:04:35

0

也可以考慮建立你的NetBeans平臺上的應用程序(一個基於Swing的RCP)。其中許多優點之一:它帶有可自定義的啓動屏幕和進度條。

樣品進度條: http://platform.netbeans.org/tutorials/nbm-paintapp.html#wrappingUp

端口Swing應用程序到NetBeans平臺: http://platform.netbeans.org/tutorials/60/nbm-porting-basic.html

更多鏈接:

http://netbeans.org/features/platform/index.html

http://netbeans.org/features/platform/all-docs.html

+0

我認爲這個問題是關於NB平臺的應用程序......現在我想知道這是否是實際情況。 – Mchl 2011-02-12 13:55:41

0

有一個相當於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)); 
2

項目屬性 - >應用程序 - >啓動畫面允許您將圖像添加到應用程序。此屬性在名爲SplashScreen-Image:MANIFEST.MF中設置了一個值,例如, SplashScreen-Image: META-INF/GlassFish316x159.jpg該屬性將自動使圖像顯示爲啓動畫面。它在NetBeans內部不起作用,並且必須在IDE之外運行。

有一個教程Splash Screen Beginner Tutorial詳細說明如何使用它的更多細節。本教程是針對NetBeans 6.8完成的,但是可以在本文發佈時的最新版本7.2.1上運行。