[英]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>
但是,如果需要進度條,則必須做一些復雜的事情,並自己編寫一些代碼。 這是通過以下方式完成的。
這應該幾乎立即顯示啟動畫面,然后在應用程序完全加載后將其隱藏。
要查看一些初始屏幕代碼,請在此處查看 。 鏈接中的實現僅顯示如何使用-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
更多鏈接:
有一個與飛濺屏幕等效的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.