簡體   English   中英

NetBeans的啟動畫面功能如何工作?

[英]How does NetBeans' Splash Screen feature work?

NetBeans的新功能,並且剛剛注意到,在File >> Project Properties >> Application對話框中有一個標記為Splash Screen的文本字段,可用於指定程序啟動時要顯示的圖像的路徑。

我想自定義啟動畫面的工作方式(添加進度條等),並希望從頭開始對其進行編碼,但不知道從哪里開始。 基於Java / Swing的啟動畫面的最佳做法是什么?

感謝您的所有投入!

項目屬性->應用程序->初始屏幕允許您將圖像添加到應用程序。 此屬性在MANIFEST.MF設置一個名為SplashScreen-Image:例如SplashScreen-Image: META-INF/GlassFish316x159.jpg此屬性將自動使圖像顯示為初始屏幕。 它在NetBeans內部不起作用,必須在IDE外部運行。

有一個Splash Screen Beginner教程 ,其中詳細介紹了如何使用它。 本教程已針對NetBeans 6.8完成,但將在本文發布時的最新版本7.2.1上運行。

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

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

這是一個簡單的例子

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

但是,如果需要進度條,則必須做一些復雜的事情,並自己編寫一些代碼。 這是通過以下方式完成的。

  1. 使用初始屏幕元素創建一個JWindow(或Window或未裝飾的JFrame)組件
  2. 設置為可見
  3. 完成其余的Swing GUI啟動代碼
  4. 將JFrame設置為visible,然后立即將JWindow設置為visible(false)

這應該幾乎立即顯示啟動畫面,然后在應用程序完全加載后將其隱藏。

要查看一些初始屏幕代碼,請在此處查看 鏈接中的實現僅顯示如何使用-splash命令來實現您的目標,但這將為您提供一個良好的開端,其中包括您請求的進度條。

我不確定NetBeans是如何做到的,但是JRE從版本6開始就支持啟動畫面。請參見http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/splashscreen/

初始屏幕只是java.awt.Window或未經修飾的javax.swing.JFrame的實例。 要創建窗口,只需說出new Window(null) ,然后設置大小和位置(使用takeit可以計算屏幕中心在哪里),然后說出window.setVisible(true)

由於這是您自己的窗口,因此您可以執行所需的操作:設置布局,圖像,將過程欄添加到SOUTH等。

您還可以使用JFrame:new JFrame()。setUndecorated(true)`

希望這對您有所幫助,這是一個如何使用虛擬進度欄創建簡單啟動畫面的小例子:

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 Platform構建的,則以下是有關啟動屏幕自定義的教程: http : //wiki.netbeans.org/Splash_Screen_Beginner_Tutorial

還可以考慮在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

有一個與飛濺屏幕等效的Javafx示例。 但是,此初始屏幕基本上是一個java swing小程序,從javafx調用以顯示給用戶,並使用進度條和已加載內容的標題來模擬或多或少的Eclipse和Netbeans初始屏幕。 是鏈接。

您必須能夠獲取代碼並分離出用Java swing編寫的啟動屏幕代碼,並自己使用它。

這是一個自定義的Java擺動初始屏幕。 因此,為了使啟動屏幕居中,它使用了傳統的

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension labelSize = l.getPreferredSize();
setLocation(screenSize.width / 2 - (labelSize.width / 2), 
                  screenSize.height / 2 - (labelSize.height / 2));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM